VBAユーザーフォームでの製品名の表示と削除方法

Visual Basic

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に基づいて製品名を表示したり、削除ボタンで製品名を削除したりする方法を解説しました。これにより、ユーザーフォームを活用してデータを簡単に操作できるようになります。コードをカスタマイズして、自分の業務に合わせた操作を追加することができます。

コメント

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