我正在尝试使用this userform来获取日期,但我不知道如何将其设置为今天显示为默认值(始终是18/08/2012),我不知道如何实际获取它将所选日期传递给当前子。
我找不到在线提到的博客。
Sub Macro1()
UserForm1.TextBox1.Text = Date
UserForm1.Show
ActiveCell.Value = UserForm1.TextBox1.Value
End Sub
我正在尝试使用上面的代码来测试它。
答案 0 :(得分:1)
在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
的类型为字符串,因此会产生不同的结果。
我也相信明确的总是更好所以我建议你在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
Sub生成的临时表。看来你不能删除不可见的表格(我使用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
的手动输入标题。在正确合并所有更改后,您应该在Userform1
中获得正确的日期。
其他强>
您正在正确访问TextBox1
的值。但如果你想传递某个地方,我建议编辑这段代码。
'~~> Ok Button
Private Sub CommandButton53_Click()
MsgBox TextBox1.Text
End Sub
<强>示例:强>
Private Sub CommandButton53_Click()
ActiveCell.Value = TextBox1.Value
End Sub