私は、日付の2つのTextBoxフィールドを持つuserformを持っています。テキストボックスを入力して「タブ」を押すか、他のボックスをクリックすると、フィールドはまずワークシートのセルに入力され、テキストボックス内の日付がフォーマットされます(これにより、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