我有一個用戶窗體有兩個日期的文本框字段。當我填入文本框並按下「選項卡」或單擊其他框時,該字段將首先在工作表上填寫單元格,然後在文本框中格式化日期(這允許以不同格式進行日期輸入,例如1/1/17,無論它應該返回爲mmm dd,yyyy)。Excel VBA - 無法更改日期格式在TextBox中的用戶表單
這是我的問題。一切工作萬無一失,但全年始終停留在2017年。我試圖在所有格式的相應輸入日期,月份和日期的變化,但同比仍保留在2017年
這裏是下面的代碼:
Private Sub Button_OK_Click()
Sheets("Inputs").Range("C18").Value = Format(TextBox_StartDate.Value, "mmm dd, yyyy")
TextBox_StartDate.Value = Format(Sheets("Inputs").Range("C18").Text, "mmm dd, yyyy")
Sheets("Inputs").Range("C19").Value = Format(TextBox_EndDate.Value, "mmm dd, yyyy")
TextBox_EndDate.Value = Format(Sheets("Inputs").Range("C19").Text, "mmm dd, yyyy")
If TextBox_StartDate.Value = "" Or TextBox_EndDate.Value = "" Then
MsgBox ("Start and End Dates must be filled in to continue.")
ElseIf Sheets("Inputs").Range("C18").Value > Sheets("Inputs").Range("C19").Value Then
MsgBox ("End Date must be after Start Date.")
ElseIf Not (IsNumeric(Sheets("Inputs").Range("C18").Value) And IsNumeric(Sheets("Inputs").Range("C18").Value)) Then
MsgBox ("Date fields must be filled in properly.")
Else
Continue = True
Unload Me
End If
End Sub
Private Sub TextBox_StartDate_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then
Sheets("Inputs").Range("C18").Value = Format(TextBox_StartDate.Value, "mmm dd, yyyy")
TextBox_StartDate.Value = Format(Sheets("Inputs").Range("C18").Text, "mmm dd, yyyy")
Sheets("Inputs").Range("C19").Value = Format(TextBox_EndDate.Value, "mmm dd, yyyy")
TextBox_EndDate.Value = Format(Sheets("Inputs").Range("C19").Text, "mmm dd, yyyy")
End If
End Sub
任何幫助將不勝感激!
我複製了你的代碼,我沒有得到你的錯誤。它表現得像我想你想的那樣。我使用瑞典語區域設置運行Excel 2016。 – Sam
我沒有收到錯誤。我的問題是,當日期在文本框中自動填充時,無論我投入多少年,它總是以2017年爲填充。 – Vietson
您的代碼適用於我。例如。如果我在「TextBox_StartDate」中輸入「5/6/15」,它會正確地將其轉換爲「2015年6月5日」。我不喜歡**的方式**你是這樣做的(我寧願把日期當作日期,而不是將它們轉換爲文本,然後再轉換爲日期,然後再將它們轉換爲文本),但它似乎工作。 – YowE3K