ユーザーフォームのテキストボックスにロードした後に日付形式を変更します
質問
私はTextBoxを持つユーザーフォームを持っています。TextBoxが初期化されているときは、実際の日付でいっぱいになっています。私がやりたいことは、カスタム日付形式で記入することです= DD-MM-YYYY
私は下記のコードを書きました、そして何かについて何か問題がありますが、何が悪いのかわかりません。コードは値を挿入する前にMSGBOXを持ち、MsgBox
はカスタム形式で日付を表示しますが、textbox.value
に渡されたときはM/DD/YYY
のようなものです。
Dim year As Long, year_control As Date
year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
MsgBox (year_control)
textbox.Value = year_control
.
(...)
If year_control < "01-04-" & year Then
Me.Controls("rok1").Value = True
Else
Me.Controls("rok2").Value = True
End If
. 解決
日付変数を "フォーマット"できません:
year_control As Date
year_control = Format(Date, "dd-mm-yyyy")
.
上記のコードは、日付変数が単に日付の穴の穴であるため、日付変数をIEEE 64ビット(8バイト)の浮動小数点数(8バイト)の浮動小数点数、9999年1月1日から12月31日までの日付を表すDate変数を使用します。 0:00:00~23:59:59までの時間。
この変数に何をしても、コンピュータによって認識された短い日付形式に従って日付を表示します。あなたのコンピュータによって認識されている時間形式(12時間または24時間)に従って時間が表示されます。
だから、Date
変数によって保持されている内部値を変更することはできますが、同じvaavalableの中にフォーマットを保存することはできません。
あなたはそれを表示することができますが、文字列変数の内部に似ています。だから、あなたが使ったら:
Dim year As Long, year_control As Date
Dim strYear_control As string
year = Format(Date, "yyyy")
year_control = Format(Date, "dd-mm-yyyy")
strYear_control = Format(year_control , "dd-mm-yyyy")
MsgBox (strYear_control)
textbox.Value = strYear_control
.
あなたが期待しているように働くべきです。 Format()
関数は、フォーマット式に含まれている命令に従ってフォーマットされた式を含む変数(文字列)を返します。
サイドとしてノートを使用することもできます
Format$(year_control , "dd-mm-yyyy")
.
はるかに速くなるので、FormatDateTime
を使用して他のさまざまな方法で日付をフォーマットできます。