• ベストアンサー

エクセルVBAでシリアル値で読み込まれてしまう

こんばんわ! エクセルVBAのユーザーフォームの質問です。 A1セルにある日付データ(yyyy/mm/dd形式)のデータをユーザーフォームのテキストボックスに入れるとシリアル値になってしまいます。 式は普通に aaa.text=range("a1") としています。 同様に時刻もなってしまうのですが、どうしたら通常のyyyy/mm/dd形式(時刻はhh:mm形式)で表示できるでしょうか? アドバイスの程よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

当たり前。 テキストボックスはテキスト=文字形式で文字列を表示するコントロール(仕組み)です。 一方エクセルは日付のセルは、「セルの値」はヒ日付シリアル値です。 range("a1")は「セルの値」を問題にする書き方。 そのまま表示すると数字文字で表示される。 見た目も日付で表示するなら、編集して文字列ウィオ作る TextBox1.text=Format(Range("A1"),"yyyy/mm/dd")のようにしたら仕舞い。 テキストボックスに直接表示形式を設定する仕組みは、はない。テキストボックスのプロパティに無い。作られて居ないというkと。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

直接放り込んでしまうとセルの生値(シリアル値)が投入されてしまいます。 format関数で整形するのが一応定石ですが,実際には me.textbox1 = worksheets("シート名").range("A1").text のようにすることで,「セルの表示のまま」に記入することができます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のようにしてはどうでしょう。 aaa.Text=Range("A1") aaa.Text.NumberFormat="yyy/mm/dd" aaa.Text.NumberFormat="hh:mm"

関連するQ&A