誕生日にもらった意外なもの

VBA初心者です。見よう見真似で売上伝票を作っています。
TextBox1には入力したコードをSheet2B1に書き込みたいです。
TextBox2にはTextBox1に入力したコードを見てVlookupのように、
商品リストから参照し、TextBox2に反映させたいです。

自分で作成してみたのですが、全く動きませんでした。
是非教えて下さい。宜しくお願い致します。


Private Sub CommandButton1_Click()
With Worksheets("Sheet2")
.Range("B1") = TextBox1.Text
End With
With Worksheets("商品リスト")
TextBox2.Text = Application.WorksheetFunction.VLookup(Val(TextBox1.Value), RangeA, 2, False)
End With
End Sub

A 回答 (1件)

こんにちは。



今のままですと、Vlookup で、最後の引数は、False になりますから、エラーを吐き出しますが、TextBox2.Text は、文字列しか受け付けませんので、そのままエラーで止まってしまいます。

それと、

 RangeA

ここがどうなっているのかなって思います。
変数に設定しているなら、

With Worksheets("商品リスト")
Set RangeA = .Range("A1:B20") 
   ・
   ・
   ・
   

としなければならないと思います。

私ですと、こんな書き方になるかと思います。コマンドボタンは必要ありません。

TextBox1 に対して、"Enter" に対するイベントを付けます。

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Data As Variant
If KeyCode <> 13 Then Exit Sub
 With Worksheets("商品リスト")
  Worksheets("Sheet2").Range("B1").Value = TextBox1.Text
  If TextBox1.Text <> "" Then
  ' .Range("A1:B20") は、実際の商品データ
  Data = Application.VLookup(Val(TextBox1.Value), .Range("A1:B20"), 2, False)
  End If
  If IsError(Data) Then
    TextBox2.Text = ""
  Else
    TextBox2.Text = Data
  End If
 End With
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!