在你的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