コンボボックスを配置して部品登録フォームを作る 【VBA在庫管理#13】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

大パンチキャンセルからの昇竜拳コンボ、どうも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 "登録しました。"

動作確認しましょう。

ちゃんと部品登録できましたか?

oReのぞき見

まとめ

UserForm2.show  ユーザーフォーム表示
Unload UserForm2 ユーザーフォーム閉じる
ComboBox テキストボックスとリストボックスが合体した物
ComboBox1.AddItem 登録するデータ

プログラミングのコツとして、
初めのうちはブロックに分けてブロックごとに作成して、
確認するようにしたほうがスムーズに作成できると思います。

oReとねこコンボ

次回 オブジェクト名の変更とか

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました