| 
    
     |  | VLookupでは有りませんが、こんなのでも出来ますよ? このコードは、商品コードが昇順で整列している事を想定しています
 もし、商品コードが整列されて居ない場合、以下を変更して下さい
 
 lngFound = RowSearchBin(CLng(SNumber.Text), rngCode, 1)
 を
 lngFound = RowSearchBin(CLng(SNumber.Text), rngCode, 0)
 にして下さい
 
 以下をUserFormのコードモジュールに記述して下さい
 尚、単価の表示の為、txtTankaと言うTextBoxを想定しています
 
 Option Explicit
 
 Private rngCode As Range
 
 Private Sub SNumber_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
 
 Dim lngFound As Long
 Dim vntData As Variant
 
 'もし、データ範囲にデータが有り、SNumberが""で無いなら
 If (Not rngCode Is Nothing) And SNumber.Text <> "" Then
 '商品コードを探索
 '商品コードが数値として入力されている場合
 lngFound = RowSearchBin(CLng(SNumber.Text), rngCode, 1)
 '商品コードが文字列として入力されている場合
 '    lngFound = RowSearchBin(SNumber.Text, rngCode, 1)
 '商品コードが有った場合
 If lngFound > 0 Then
 Shouhin.Text = rngCode.Item(lngFound, 2).Value
 txtTanka.Text = rngCode.Item(lngFound, 3).Value
 Else
 Cancel = True
 Beep
 MsgBox "該当コードが有りません"
 Shouhin.Text = ""
 txtTanka.Text = ""
 End If
 End If
 
 End Sub
 
 Private Sub UserForm_Initialize()
 
 Dim lngRows As Long
 
 '商品等のデーターの左上隅を基準とする(列見出しが有る場合)
 With Worksheets("Sheet1").Cells(1, "A")
 'データ行数を取得
 lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row
 If lngRows > 0 Then
 'データ範囲を設定
 Set rngCode = .Offset(1).Resize(lngRows)
 End If
 End With
 
 '商品等のデーターの左上隅を基準とする(列見出しが無い場合)
 '  With Worksheets("Sheet1").Cells(1, "A")
 '    'データ行数を取得
 '    lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
 '    If lngRows >= 1 And .Value <> "" Then
 '      'データ範囲を設定
 '      Set rngCode = .Resize(lngRows)
 '    End If
 '  End With
 
 End Sub
 
 Private Sub UserForm_Terminate()
 
 Set rngCode = Nothing
 
 End Sub
 
 Private Function RowSearchBin(vntKey As Variant, _
 rngScope As Range, _
 Optional lngMode As Long) As Long
 
 Dim vntFound As Variant
 
 'Matchによる二分探索
 vntFound = Application.Match(vntKey, rngScope, lngMode)
 'もし、エラーで無いなら
 If Not IsError(vntFound) Then
 'もし、Key値と探索位置の値が等しいなら
 If vntKey = rngScope(vntFound).Value Then
 '戻り値として、行位置を代入
 RowSearchBin = vntFound
 End If
 End If
 
 End Function
 
 |  |