ビジネスに役立つ講座や交流会を開催
社長・個人事業主からサラリーマン・主婦まで、どなたでも
アベノ塾

ホーム  会場案内  お問合せ

〒545-0052
大阪市阿倍野区阿倍野筋3-12-2
あべのクオレ1F
(ナガセキャリアプラザ アベノ校)
TEL 06-6647-5571

(7)商品マスター検索

(a)商品コード入力

商品コードを入力すれば商品名が表示するプログラムを作ります。

 


・商品コード入力の判断は検索シートの2列目が変化した時の行Target.Rowを取得します。
・検索はsyouhinkensakuf関数を作って使っています。
・検索方法は条件付き繰り返しを使います。
シートモジュールに記述
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Long
    If Target.Column = 1 Then
       x = Target.Row
       Cells(x, 2) = syouhinkensakuf(Cells(x, 1))
    End If
End Sub
Function syouhinkensakuf(scode As Long) As String
         Dim lastrow As Long
         Dim i As Long
         lastrow = Worksheets("商品名").Cells(Rows.Count, 1).End(xlUp).Row
         For i = 2 To lastrow
             If scode = Worksheets("商品名").Cells(i, 1) Then
                syouhinkensakuf = Worksheets("商品名").Cells(i, 2)
                Exit Function
             End If
         Next
         syouhinkensakuf = ""
         MsgBox "商品コードがみつかりません"
End Function

(b)リストボックスから検索

検索ボタンをクリックすると商品検索のリストボックスが表示され該当する商品をダブルクリックするかOKボタンをクリックするとアクティブセル(選択しているセル)
に商品コードと商品名が代入されます。
・商品名を代入するときはActiveCellの1列右側ですのでOffset(0, 1)を使っています。
・リストボックスの2列目の取得はlstSyouhin.List(lstSyouhin.ListIndex, 1)を使います。
フォームモジュールに記述
Private Sub cmdOk_Click()
    ActiveCell = lstSyouhin.Text
    ActiveCell.Offset(0, 1) = lstSyouhin.List(lstSyouhin.ListIndex, 1)
    Unload Me
End Sub
Private Sub lstSyouhin_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = lstSyouhin.Text
    ActiveCell.Offset(0, 1) = lstSyouhin.List(lstSyouhin.ListIndex, 1)
    Unload Me
End Sub
Private Sub UserForm_Initialize()
    Dim lastrow As Long
    Dim i As Long
    lastrow = Worksheets("商品名").Cells(Rows.Count, 1).End(xlUp).Row
    lstSyouhin.ColumnCount = 2
    For i = 2 To lastrow
        With lstSyouhin
            .AddItem
            .List(i - 2, 0) = Worksheets("商品名").Cells(i, 1)
            .List(i - 2, 1) = Worksheets("商品名").Cells(i, 2)
        End With
    Next
End Sub
Private Sub cmdCancel_Click()
    Unload Me
End Sub
標準モジュールに記述
Sub kensaku()
    frmSyouhin.Show
End Sub