オシャンティーになりたい、どうもoReです。
今回は、殺風景だったユーザーフォームを
オシャンティーにしていきます。
Label
・Label レェィバァル
Ladbelは、『はり紙』という意味みたいです。
Labelは、文字を表示させるものです。
・ツールボックスのラベルを選択→ユーザーフォームに挿入
・ラベルを選択→ラベルのプロパティで変更
・Caption 表示する文字変更
・Font 文字のサイズ等変更
・ForeColor 文字の色変更
ちなみに、プログラムでも変更可能です。
例えば、表示する文字を変更する場合
Label1.Caption = "日時"
もしくは
Label1 = "日時"
※Captionは省略しても表示されます。
これを、UserForm_Initialize()に書いておけば、
Label1が日時と表示されます。
プロパティは色々あるので、いじって覚えるかググってください。
↓こんな感じ
Frame
・Frame フレェィム
Frameは、『枠』という意味みたいです。
Frameは、フレーム内の物をグループ化する感じです。
※私は装飾としてよく使いますけど
・ツールボックスのフレームを選択→ユーザーフォームに挿入
挿入したフレームの上にテキストボックスを移動させ、
フレームのCaptionを『手順1 入出庫者名を入力してください。』
等としておくとわかりやすくなります。
↓こんな感じ
ラベルに部品データを表示させる
ユーザーフォームに空きスペースがあるので、
ラベルを使って部品データを表示させてみます。
↓下準備としてこんな感じ
ラベル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を選択
なんか、ごにょごにょ書いてありますが…
キーを押すと動くよっ!!て感じです。
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
動作確認してみてください。
ちゃんとラベルに表示されましたか?
作っていて思ったこと
いまさらですが、入出庫した際メッセージを出したほういいですね。
本当に入出庫されたの?と不安になります。
↓この辺に追加します。※出庫処理
.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
まとめ
だいぶん見やすくなったと思います。
次はどんな機能を追加しようかしら…
次回 部品登録フォームほしくね?
コメント