使用自定义日历表单的输出
我正在尝试使用此用户窗体获取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
请注意,我删除了OERN和OEG0,因为我认为没有必要这样做。
最后,清理完所有的东西,你需要清除属性窗口中CommandButton45
和TextBox1
的手动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