
例:「在庫管理」から「棚卸管理」または「貸出管理」のデータを抽出し表示させる。
シートは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」をマクロ登録します。
