使用自定义日历表单的输出

我正在尝试使用此用户窗体获取date,但我不知道如何将其设置为默认显示(始终18/08/2012),我不知道如何实际将它通过选定的date目前分。

我找不到在线提到的博客。

Sub Macro1() UserForm1.TextBox1.Text = Date UserForm1.Show ActiveCell.Value = UserForm1.TextBox1.Value End Sub 

我试图使用上面的代码来testing它。

在你的GenerateCal Sub的底部添加这两(2)行。
这些代码行将初始化所述控件的值。

 CommandButton45.Caption = Format(.Range("A1").Value, "mmm - yyyy") TextBox1.Text = DateSerial(Val(Format(CommandButton45.Caption, "YYYY")), _ Val(Format(CommandButton45.Caption, "MM")), 1) 

然后改变这一行:

 .Range("a1").Value = Application.Text(dt, "mmmm yyyy") 

到这一行:

 .Range("a1").Value = Application.Text(StartDay, "mmmm yyyy") 

dt是stringtypes,所以它会产生不同的结果。

我也相信明确总是更好,所以我build议你在GenerateCal Sub的基础上添加这个声明。

 Dim StartDay As Date, FinalDay As Date Dim DayOfWeek As Integer, CurYear As Integer, CurMonth As Integer, x As Integer Dim Cell As Range Dim RowCell As Long, ColCell As Long 

下一个问题是删除由UserForm_Initialize小组生成的临时工作表。 看来你不能删除一个不可见的工作表(我正在使用XL2013,我不确定它是否适用于其他版本)。 所以你需要改变它有点像:

 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ' On Error Resume Next Application.DisplayAlerts = False With ws .Visible = xlSheetVisible .Delete End With Application.DisplayAlerts = True ' On Error GoTo 0 End Sub 

请注意,我删除了OERNOEG0,因为我认为没有要这样做。

最后,清理完所有的东西,你需要清除属性窗口中CommandButton45TextBox1的手动input的标题。 一旦你正确地结合了所有的改变,你应该在你的Userform1得到正确的date。

额外:

您正在访问TextBox1的值。 但是我build议编辑这个代码,如果你想通过某处。

 '~~> Ok Button Private Sub CommandButton53_Click() MsgBox TextBox1.Text End Sub 

样品:

 Private Sub CommandButton53_Click() ActiveCell.Value = TextBox1.Value End Sub