ExcelのVBAを使用して、ユーザーフォームに入力された製品名をシート1から検索し表示させたり、削除ボタンを押したときにシート上の対応する製品名を削除する方法を解説します。
1. ユーザーフォームの設定
まず、ユーザーフォームを作成し、次のような項目を追加します。
- テキストボックス(製品名の表示用)
- ボタン(削除用)
- Noに対応するテキストボックス(Noの入力用)
これにより、フォームに入力されたNoに該当する製品名を表示し、削除ボタンで製品名を削除できます。
2. 製品名の表示方法
シート1のA列にNo、B列に製品名が入力されている前提で、ユーザーフォームに入力されたNoに基づいて製品名を表示するコードを作成します。以下のコードをフォームの初期化時に追加することで実現できます。
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim No As Integer
No = CInt(Me.txtNo.Value) ' ユーザーフォームのテキストボックスからNoを取得
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If ws.Cells(i, 1).Value = No Then
Me.txtProductName.Value = ws.Cells(i, 2).Value ' 対応する製品名をテキストボックスに表示
Exit For
End If
Next i
End Sub
このコードは、ユーザーフォームのテキストボックスにNoを入力すると、シート1から該当する製品名を検索し、製品名を表示します。
3. 製品名の削除方法
削除ボタンを押した時に、対応する製品名をシートから削除する方法は、以下のコードで実現できます。削除対象の製品名を削除するために、ユーザーフォームのテキストボックスに入力されたNoを基に行を検索し、その行の製品名を削除します。
Private Sub btnDelete_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim No As Integer
No = CInt(Me.txtNo.Value) ' ユーザーフォームのテキストボックスからNoを取得
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If ws.Cells(i, 1).Value = No Then
ws.Cells(i, 2).ClearContents ' 対応する製品名を削除
MsgBox "製品名が削除されました。"
Exit For
End If
Next i
End Sub
このコードは、削除ボタンをクリックすると、Noが一致する行の製品名を削除します。
4. まとめ
Excel VBAを使用して、ユーザーフォームで入力されたNoに基づいて製品名を表示したり、削除ボタンで製品名を削除したりする方法を解説しました。これにより、ユーザーフォームを活用してデータを簡単に操作できるようになります。コードをカスタマイズして、自分の業務に合わせた操作を追加することができます。


コメント