- ベストアンサー
ユーザーフォームの結果表示についてのご質問
- ユーザーフォームで年月日を入力し、シートに表示したい場合に月や日が一桁の場合には先頭に「0」を付ける方法についてお教えください。
- ユーザーフォームの初期化処理において、年月日のスピンボタンの範囲や初期値を設定しています。
- スピンボタンの値が変更されたときには、DAY_PUTサブを呼び出し、TextBoxに値を表示します。最後にボタンを押したときにTextBoxの値を集計表に表示します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
初期設定時には2桁に整形していますが、スピンボタンで変更した際には整形していないですね やるなら DAY_PUTプロシージャ側で整形した方がスマートなように思います Sub DAY_PUT TextBox1.Text = Format(SpinButton1.value, "0000" ) TextBox2.Text = Format(SpinButton2.value, "00" ) TextBox3.Text = Format(SpinButton3.value, "00" ) End Sub 初期設定時の SpinButton1.Value = Year(Date) SpinButton2.Value = Month(Date): If month_mm < 10 Then month_mm = "0" & month_mm SpinButton3.Value = Day(Date): If day_dd < 10 Then day_dd = "0" & day_dd を SpinButton1.Value = Year(Date) SpinButton2.Value = Month(Date) SpinButton3.Value = Day(Date) Call DAY_PUT してやれば 表示形式を訂正する場合も DAY_PUT側だけいじればいいことになります セルへの転記ですが 転記したセルの値を 他のセルの数式で日付として扱うのであれば #1の回答のように DateSerialやDateValue、CDateなどで日付のシリアル値に直してから代入した方がいいでしょう
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
最終的にエクセルのシートにデータを表示するのだから、エクセルのシートの表示形式の設定を、ユーザー定義の「00」の設置で対処すべきと思う(年月日を3セルに分ける場合)。年月日を1セルに込めてプログラムで、かつプログラムでやる場合は下記コードを参考にすること。 そのとき >Workbooks("集計表").ActiveSheet.Range("a1") = tbox1 & tbox2 & tbox3 なんてやるのでなく、 Sub test02() tbox1 = "2008" tbox2 = "12" tbox3 = "23" Cells(1, 2) = DateSerial(Val(tbox1), Val(tbox2), Val(tbox3)) Cells(1, 2).NumberFormat = "ggge年mm月dd日" End Sub を参考に、日付シリアル値でセルにセットし、セルの表示形式で 適当な日付書式にすべきと思う。 このほうが、利用する場合、一般的には役立つ。 ーー また質問文のコードは、回答に関係ないコードが多すぎる。
お礼
大変分かりやすく、且つご丁寧にお教え頂き ありがとうございました。