スピンボタンで日付を変更する
Excel2016,2013マクロ 41回
受注表にフォームから記入する
オーダーが入った時に、在庫を調べて、受注表に記入するという流れを想定したフォームです。
受注数と受注日以外は、リストを選択することで自動的に連動して表示されます。
この記事では、以下の内容について解説しています。
- 1. フォームを使って受注表にデータを自動的に記入する方法
- 2. スピンボタンを使用して日付入力を簡単に操作する方法
- 3. スピンボタンのコード設定の手順
- 4. テキストボックスの日付の初期値の設定方法
- 5. フォームから受注表に記入するコードの作成と実装
(サンプルファイルは、こちらから マクロ41回サンプルデータ)
VBAのスピンボタンコントロールの概要
スピンボタンコントロールは、UserFormに配置することができるアクティブXコントロールで、主に数値の増減や日付の変更などに利用されます。
スピンボタンは、上下の矢印ボタンが配置されたコントロールで、クリックすることで数値や日付を増減させることができます。
テキストボックスの日付にスピンボタンを使う
左下側に、ラベルとテキストボックス、そしてスピンボタンを設置しましょう。
フォーム上のコマンドボタンの位置を少し移動します。
フォーム上のコマンドボタンの位置を少し移動します。
空いたスペースにツールボックスからラベルを設置します。
続いてテキストボックスを表示します。ラベルには受注日と記入します。
隣に スピンボタンを設置します。
スピンボタンのコード設定手順
スピンボタンの主なイベント:
SpinUp(スピンアップ):スピンボタンの上矢印がクリックされたときに発生するイベントです。
このイベント内
にコードを記述することで、値の増加処理を実行できます。
SpinDown(スピンダウン):スピンボタンの下矢印がクリックされたときに発生するイベントです。
このイベント
内にコードを記述することで、値の減少処理を実行できます。
スピンボタン上で右クリックしてコードの表示を選択します。
まず、
スピンボタンのスピンアップのコードを記入しましょう。
スピンダウンのコードは、スピンアップのコードをコピーして、
DateAdd("d", -1, 日付)
と1を-1に変更するだけです。
DateAdd("d", -1, 日付)
と1を-1に変更するだけです。
テキストボックスの日付の初期値のコードを設定
日付の初期値のコードを記入します。
UserForm_Activateで
UserForm1.TextBox4.Value = Dateと1行追加します。
UserForm_Activateで
UserForm1.TextBox4.Value = Dateと1行追加します。
フォームの動作を確認すると、日付が表示されています。
フォームから受注表に転記するコード:受注表に記入するコード
今回は、表にデータが1行しかない場合(毎月新規に表を作成する場合など)を想定して、 Selection.End(xlUp).Offset(1, 0).Selectとしています。
フォームのテータをシートに転記した後、ListBox1を非選択の状態にもどし、TextBox3、TextBox4を空欄にしています。これにより、続けて在庫を確認することができるようになります。
コードは次のようになります。
Private Sub CommandButton1_Click() Me.Hide Sheet1.Range("B" & Rows.Count).Select ' Selection.End(xlUp).Offset(1, 0).Select ' ActiveCell.Value = TextBox4.Value ActiveCell.NumberFormatLocal = "yyyy/mm/dd" ActiveCell.Offset(0, 1).Value = ListBox1.Value ActiveCell.Offset(0, 2).Value = ListBox2.Value ActiveCell.Offset(0, 3).Value = TextBox3.Value ActiveCell.Offset(0, 3).NumberFormatLocal = "G/標準" ActiveCell.Offset(0, 4).Value = TextBox2.Value Me.ListBox1.ListIndex = -1 ' TextBox3.Value = "" TextBox4.Value = "" Me.Show End Sub
こちらは、クリアボタンのコード。下は閉じるボタンのコードになります。
在庫を確認して、注文を入力できるようになりました。