スピンボタンで日付を変更する

スピンボタンで日付を変更する
スピンボタンで日付を変更する

Excel2016,2013マクロ 41回

受注表にフォームから記入する

オーダーが入った時に、在庫を調べて、受注表に記入するという流れを想定したフォームです。
受注数と受注日以外は、リストを選択することで自動的に連動して表示されます。
この記事では、以下の内容について解説しています。

  • 1. フォームを使って受注表にデータを自動的に記入する方法
  • 2. スピンボタンを使用して日付入力を簡単に操作する方法
  • 3. スピンボタンのコード設定の手順
  • 4. テキストボックスの日付の初期値の設定方法
  • 5. フォームから受注表に記入するコードの作成と実装

(サンプルファイルは、こちらから マクロ41回サンプルデータ

VBAのスピンボタンコントロールの概要

スピンボタンコントロールは、UserFormに配置することができるアクティブXコントロールで、主に数値の増減や日付の変更などに利用されます。
スピンボタンは、上下の矢印ボタンが配置されたコントロールで、クリックすることで数値や日付を増減させることができます。

テキストボックスの日付にスピンボタンを使う

左下側に、ラベルとテキストボックス、そしてスピンボタンを設置しましょう。
フォーム上のコマンドボタンの位置を少し移動します。
スピンボタンで日付を変更するマクロ1
空いたスペースにツールボックスからラベルを設置します。
スピンボタンで日付を変更するマクロ2
続いてテキストボックスを表示します。ラベルには受注日と記入します。
スピンボタンで日付を変更するマクロ3
隣に スピンボタンを設置します。
スピンボタンで日付を変更するマクロ4

スピンボタンのコード設定手順

スピンボタンの主なイベント:

SpinUp(スピンアップ):スピンボタンの上矢印がクリックされたときに発生するイベントです。
このイベント内 にコードを記述することで、値の増加処理を実行できます。
SpinDown(スピンダウン):スピンボタンの下矢印がクリックされたときに発生するイベントです。
このイベント 内にコードを記述することで、値の減少処理を実行できます。

スピンボタン上で右クリックしてコードの表示を選択します。
スピンボタンで日付を変更するマクロ5
まず、 スピンボタンのスピンアップのコードを記入しましょう。
スピンボタンで日付を変更するマクロ6
スピンダウンのコードは、スピンアップのコードをコピーして、
DateAdd("d", -1, 日付) 
と1を-1に変更するだけです。
スピンボタンで日付を変更するマクロ7

テキストボックスの日付の初期値のコードを設定

日付の初期値のコードを記入します。
UserForm_Activate
UserForm1.TextBox4.Value = Dateと1行追加します。
スピンボタンで日付を変更するマクロ8
フォームの動作を確認すると、日付が表示されています。
スピンボタンで日付を変更するマクロ9

フォームから受注表に転記するコード:受注表に記入するコード

今回は、表にデータが1行しかない場合(毎月新規に表を作成する場合など)を想定して、 Selection.End(xlUp).Offset(1, 0).Selectとしています。

フォームのテータをシートに転記した後、ListBox1を非選択の状態にもどし、TextBox3、TextBox4を空欄にしています。これにより、続けて在庫を確認することができるようになります。

スピンボタンで日付を変更するマクロ10
コードは次のようになります。
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
こちらは、クリアボタンのコード。下は閉じるボタンのコードになります。
スピンボタンで日付を変更するマクロ11
スピンボタンで日付を変更するマクロ11
在庫を確認して、注文を入力できるようになりました。
スピンボタンで日付を変更するマクロ12