大パンチキャンセルからの昇竜拳コンボ、どうもoReです。
今回は、コンボボックスを配置して
部品の登録フォームを作っていきます。
部品登録用UserFormの挿入
ユーザーフォームの挿入方法は【VBA在庫管理#05】を見てね。
新たにユーザーフォームを挿入すると、
UserForm2というユーザーフォームが挿入されます。
UserForm2のCaptionを部品登録としますか。
そうしたら、UserForm1上にUserForm2を表示させる
コマンドボタンを配置します。
・ツールボックスのコマンドボタンを選択
→コマンドボタンを配置→コマンドボタンをダブルクリック
UserForm2を表示させるプログラムを書きましょう。
Private Sub CommandButton3_Click()
UserForm2.show '部品登録フォームを表示させるよ
End Sub
部品登録ボタンを押して、部品登録フォームが表示されましたか?
ComboBox
・ComboBox カァンボォゥボォクス
Comboは、『組み合わせ』という意味みたいです。
ComboBoxは、テキストボックスとリストボックスが合体した物です。
テキスト入力できるし、登録したデータをリストから選べるしで、
とても出来る子です。
今回はコンボボックスを使っていきます。
・ツールボックスのコンボボックスを選択→部品登録フォームに配置
それでは、ComboBox1にデータを登録してみましょう。
リストボックスに入出庫履歴を表示させる時に使用した、
AddItemを使用し登録していきます。
ComboBox1.AddItem 登録するデータ
UserForm2のUserForm_initializeに書きます。
initialize?の方は→【VBA在庫管理#09】を見てね。
'ユーザーフォーム初期化
Private Sub UserForm_initialize()
With ComboBox1
.AddItem "アサヒビール株式会社"
.AddItem "三和酒類株式会社"
.AddItem "Marlboro"
End With
End Sub
部品登録フォームを表示させて、
コンボボックスの▼をクリックしてみましょう。
メーカー名が登録されてますか?
部品登録用フォームの作成
動作条件
・キャンセルボタンを押すと、部品登録フォーム上の各データを消す。
・終了ボタンを押すと、部品登録フォームを閉じる。
・登録ボタンを押すと、データベースシートに出力する。
・未入力のテキストボックス・コンボボックスがあったら、
メッセージを出す。
・データベースシートに出力、部品管理№は自動で連番を付ける。
・データベースシートに出力後、フォーム上の各データを消して、
メッセージを出す。
こんな感じですかね。
↓フォームの配置はこんな感じにしました。
上から
・TextBox1(バーコードデータを入力)
・ComboBox1(メーカーを入力)
・TextBox2(品名を入力)
・TextBox3(型式を入力)
・TextBox4(在庫数を入力)
ボタン 上から
・CommandButton1(キャンセル)
・CommandButton2(終了)
・CommandButton3(登録)
では、プログラミングしていきましょう。
キャンセルボタンを押すと、部品登録フォーム上の各データを消す。
“”←これで消しましょう。
'キャンセル処理
Private Sub CommandButton1_Click()
TextBox1 = ""
ComboBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
End Sub
動作確認しましょう。
終了ボタンを押すと、部品登録フォームを閉じる。Unload
・Unload アンロォゥドゥ
Unloadは、『降ろす』という意味みたいです。
フォームを表示させる場合は、Showでしたよね。
フォームを閉じる場合は、Unloadを使用します。
'終了処理
Private Sub CommandButton2_Click()
Unload UserForm2
End Sub
動作確認しましょう。
登録ボタンを押すと、データベースシートに出力する。
未入力のテキストボックス・コンボボックスがあったら、メッセージを出す。
If(条件分岐)を使いましょう。
'データベース出力処理
Private Sub CommandButton3_Click()
If TextBox1 = "" Then
MsgBox "バーコードを読み込んでください。"
ElseIf ComboBox1 = "" Then
MsgBox "メーカー名を入力してください。"
ElseIf TextBox2 = "" Then
MsgBox "品名を入力してください。"
ElseIf TextBox3 = "" Then
MsgBox "型式を入力してください。"
ElseIf TextBox4 = "" Then
MsgBox "在庫数を入力してください。"
Else
'出力プログラムはここに書くよ
'登録完了プログラムはここに書くよ
End If
End Sub
動作確認しましょう。
データベースシートに出力、部品管理№は自動で連番を付ける。
データベースシートの最終セルを取得して、
Offsetで出力していきましょう。
'出力プログラム
With Worksheets("データベース").Cells(Rows.Count, 2).End(xlUp)
.Offset(1, 0) = .Offset(0, 0).Value + 1 'ValueはなくてもOK
.Offset(1, 1) = TextBox1
.Offset(1, 2) = ComboBox1
.Offset(1, 3) = TextBox2
.Offset(1, 4) = TextBox3
.Offset(1, 5) = TextBox4 * 1
End With
動作確認しましょう。
データベースシートに出力後、フォーム上の各データを消してメッセージを出す。
Callを使って、キャンセル処理を呼び出しましょう。
'登録完了プログラム
Call CommandButton1_Click
MsgBox "登録しました。"
動作確認しましょう。
ちゃんと部品登録できましたか?
まとめ
Unload UserForm2 ユーザーフォーム閉じる
プログラミングのコツとして、
初めのうちはブロックに分けてブロックごとに作成して、
確認するようにしたほうがスムーズに作成できると思います。
次回 オブジェクト名の変更とか
コメント