例:「在庫管理」から「棚卸管理」または「貸出管理」のデータを抽出し表示させる。
シートは3つ
- 在庫
- 棚卸
- 貸出
在庫台帳のデータ「管理番号」をもとに、「棚卸管理」または「貸出管理」で該当の管理番号を抽出します。
抽出するためのフォームを使った方法で説明します。
目次
作成するもとになった管理台帳
1つのワークシート上に複数の外部媒体管理一覧があり、棚卸記録は列方向に追加する方法でした。説明するまでもなく、この方法は非常に見にくいです。
貸出台帳は別シートにあり、管理台帳と貸出台帳はそれぞれ更新する必要がありました。
改善した台帳の使い方
シート「在庫」を基準に動作します。
(1)抽出したい管理番号を選択します。→ B列「管理番号」
(2)シート上のコマンドボタン「フォーム」をクリックし、フォームを表示します。管理番号はフォーム上に表示します。
(3)フォーム上のシート「棚卸」または「貸出」を選択し、コマンドボタン「表示」をクリックします。
棚卸を選択した場合です。
台帳作成方法
シートとフォームを作成します。
シート
3つのワークシートを作成します。
- 在庫
- 棚卸
- 貸出
シート「在庫」です。
シート「棚卸」です。
シート「貸出」です。
フォーム
出来上がりです。
フォームにラベル、フレーム、フレーム内にオプションボタン2個、コマンドボタン2個を作成します。
スクロールできます
種類 | オブジェクト名 |
---|---|
フォーム | UserForm1 |
フレーム | Frame1 |
ラベル | lb_name |
オプション「棚卸」 | op_1 |
オプション「貸出」 | op_2 |
コマンドボタン「表示」 | cmd_hyoji |
コマンドボタン「キャンセル」 | cmd_cancel |
サンプルコード
コマンドボタン「表示」のコードです。
Private Sub cmd_hyoji_Click() Dim mName As String mName = lb_name.Caption Select Case True Case Me.op_1.Value Worksheets("棚卸").Select Range("A1").AutoFilter 2, mName Case Me.op_2.Value Worksheets("貸出").Select Range("A1").AutoFilter 2, mName End Select Unload UserForm1 End Sub
コマンドボタン「キャンセル」のコードです。
Private Sub cmd_cancel_Click() Unload UserForm1 End Sub
標準モジュールにフォームを表示した後のコードを作成します。
Sub uf_show() Dim cNo As Long: cNo = ActiveCell.Column Load UserForm1 With UserForm1 .op_1.Value = True .lb_name.Caption = ActiveCell.Value If .lb_name.Caption = "" Or cNo <> 2 Then MsgBox "管理番号を選択してください", vbExclamation Exit Sub End If End With UserForm1.Show End Sub
説明
- 3行目:シート「管理」で選択した番号を変数「cNo」に格納します。
- 8行目:オプション「棚卸」をデフォルトにする。
- 9行目:フォームのラベルに管理番号をひょうじする。
- 11~14行目:シート「管理」で管理番号以外を選択した場合、処理を中断します。
- 17行目:フォームを表示します。
シート「管理」上にコマンドボタンを設置し、「uf_show」をマクロ登録します。