LabelとFrameでユーザーフォームをオシャンティーに!! 【VBA在庫管理#12】

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

オシャンティーになりたい、どうもoReです。

今回は、殺風景だったユーザーフォームを
オシャンティーにしていきます。

Label

・Label レェィバァル

Ladbelは、『はり紙』という意味みたいです。

 

Labelは、文字を表示させるものです。

・ツールボックスのラベルを選択ユーザーフォームに挿入

VBAラベル挿入

 

・ラベルを選択ラベルのプロパティで変更

VBAラベルプロパティ変更

 

Caption 表示する文字変更

Font 文字のサイズ等変更

ForeColor 文字の色変更

ちなみに、プログラムでも変更可能です。

 

例えば、表示する文字を変更する場合

Label1.Caption = "日時"

もしくは

Label1 = "日時"

※Captionは省略しても表示されます。

 

これを、UserForm_Initialize()に書いておけば、
Label1が日時と表示されます。

プロパティは色々あるので、いじって覚えるかググってください。

  ↓こんな感じ

VBAラベル装飾

 

Frame

・Frame フレェィム

Frameは、『枠』という意味みたいです。

 

Frameは、フレーム内の物をグループ化する感じです。
※私は装飾としてよく使いますけど

・ツールボックスのフレームを選択ユーザーフォームに挿入

VBAフレーム挿入

 

挿入したフレームの上にテキストボックスを移動させ、
フレームのCaptionを『手順1 入出庫者名を入力してください。』
等としておくとわかりやすくなります。

  ↓こんな感じ

VBAフレーム装飾

oReステキ

ラベルに部品データを表示させる

ユーザーフォームに空きスペースがあるので、
ラベルを使って部品データを表示させてみます。

  ↓下準備としてこんな感じ

VBAラベル準備

ラベル16~21のCaptionには、Label16~21と入力されていますが、
空白(入力しない)にしてもOKです。

私の場合、変動する物はそのままのCaptionにしているだけです。

なんとなく、わかりやすいようなきがするので…

それでは、ラベルに部品データを表示させていきます。

 

UserFormの初期化時に、Label16~21の文字を消す

まず、Label16~21の文字を消します。

Label = "" 'これで消せます

 

  ↓ユーザーフォームイニシャライズに追加

Private Sub UserForm_Initialize()
  Dim LastRow As Long

  LastRow = Worksheets("入出庫履歴").Cells(Rows.Count, 9).End(xlUp).Row
  ListBox1.ColumnCount = 8
  ListBox1.ColumnWidths = “90;40;20;100;100;100;20;30;”
  ListBox1.List = Worksheets(“入出庫履歴”).Range(“B3:I” & LastRow).Value
  Label16 = "" 'ラベル16のキャプションを消すよ
  Label17 = "" 'ラベル17のキャプションを消すよ
  Label18 = "" 'ラベル18のキャプションを消すよ
  Label19 = "" 'ラベル19のキャプションを消すよ
  Label20 = "" 'ラベル20のキャプションを消すよ
  Label21 = "" 'ラベル21のキャプションを消すよ
End Sub

 

TextBox2にバーコードデータを入力してEmterキーで動作させる

・オブジェクトのTextBox2を選択プロシージャのKeyDownを選択

TextBox_KeyDown挿入

 

なんか、ごにょごにょ書いてありますが…
キーを押すと動くよっ!!て感じです。

Enterキーを押したら動作させたいので、
Enterキーのキーコード『13』を使用します。

  ↓こんな感じ

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Dim Knskcell As Range

  If KeyCode = 13 Then 'エンターキーが押された場合
    Label16 = ""
    Label17 = ""
    Label18 = ""
    Label19 = ""
    Label20 = ""
    Label21 = ""
    Set Knskcell = Columns(3).Find(what:=TextBox2, Lookat:=xlWhole) 'C列から検索するよ
    If Knskcell Is Nothing Then
      MsgBox  "部品が登録されていません。"
      TextBox2 = "" 'テキストボックス2のデータを消すよ
    Else
      '↓ラベル16~21に部品データを入れるよ
      Label16 = Knskcell.Offset(0, -1)
      Label17 = Knskcell.Offset(0, 0)
      Label18 = Knskcell.Offset(0, 1)
      Label19 = Knskcell.Offset(0, 2)
      Label20 = Knskcell.Offset(0, 3)
      Label21 = Knskcell.Offset(0, 4)
    End If
  End If
End Sub

 

動作確認してみてください。

部品詳細ラベル表示

ちゃんとラベルに表示されましたか?

oReのぞき見

作っていて思ったこと

いまさらですが、入出庫した際メッセージを出したほういいですね。

本当に入出庫されたの?と不安になります。

  ↓この辺に追加します。※出庫処理

        .Offset(1, 6) = TextBox3 * 1
        .Offset(1, 7) = “出庫”
      End With
      Call UserForm_Initialize
      MsgBox "出庫しました。"
    End If
  End If
End Sub

 

あと、入出庫後テキストボックスにデータが残っているので、
入出庫後消してしいまいましょう。

  ↓この辺に追加します。※ユーザーフォームイニシャライズ

  ListBox1.ColumnWidths = “90;40;20;100;100;100;20;30;”
  ListBox1.List = Worksheets(“入出庫履歴”).Range(“B3:I” & LastRow).Value
  TextBox1 = ""
  TextBox2 = ""
  TextBox3 = ""
  Label16 = ""
  Label17 = ""
  Label18 = ""
  Label19 = ""
  Label20 = ""
  Label21 = ""
End Sub

 

まとめ

Label1.Caption = “文字” もしくは Label = “文字”

だいぶん見やすくなったと思います。

次はどんな機能を追加しようかしら…

oReオシャンティー

次回 部品登録フォームほしくね?

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

コメント

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