ユーザーフォームのテキストボックスにロードした後に日付形式を変更します

StackOverflow https://stackoverflow.com//questions/22071452

  •  23-12-2019
  •  | 
  •  

質問

私は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を使用して他のさまざまな方法で日付をフォーマットできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top