在你的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
子产生的临时表。看来你不能删除一个不可见的表单(我使用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
请提供'UserForm'链接或代码。 – L42 2015-02-23 22:07:36
对不起!已添加 – Cassiopeia 2015-02-24 22:22:31
为您写了一个解决方案。您可以试试它,或者您可以简单地检查Trevor发布的自定义内容,并将其添加到您获得的链接中。没有测试过,所以取决于你。 – L42 2015-02-25 05:11:02