Sub GetData()
'データベースをループ
For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
'商品が一致したら、値を取得
If Sheets("入出力").Range("B3") = Sheets("DB").Cells(i, "A") Then
Sheets("入出力").Range("D3") = Sheets("DB").Cells(i, "B") '価格
Sheets("入出力").Range("B5") = Sheets("DB").Cells(i, "C") '残り数量
Sheets("入出力").Range("B6") = Sheets("DB").Cells(i, "D") '必要数量
Sheets("入出力").Range("A8") = Sheets("DB").Cells(i, "E") '備考
End If
Next
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'B3以外が変更された場合は、処理を終了
If Target.Address(False, False) <> "B3" Then Exit Sub
'データを取得する
Call GetData
End Sub
商品を選択してみます。
商品を選択する
商品を選択したタイミングで、データベースから値を取得できます。
選択したタイミングで値を取得できた
商品を選択したタイミングで、データベースから値を取得できました。
入出力シートからデータを転記
次は、入出力シートからデータベースにデータを転記するVBAコードを作成していきます。
転記するVBAコードは、次のようになります。
Sub WriteData()
Dim A
'確認メッセージを表示
A = MsgBox("データベースに転記しますか?", vbYesNo + vbQuestion, "確認")
If A = vbNo Then Exit Sub
'データベースをループ
For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
'商品が一致したら、データを転記
If Sheets("入出力").Range("B3") = Sheets("DB").Cells(i, "A") Then
Sheets("DB").Cells(i, "B") = Sheets("入出力").Range("D3") '価格
Sheets("DB").Cells(i, "C") = Sheets("入出力").Range("B5") '残り数量
Sheets("DB").Cells(i, "D") = Sheets("入出力").Range("B6") '必要数量
Sheets("DB").Cells(i, "E") = Sheets("入出力").Range("A8") '備考
End If
Next
MsgBox "データベースに転記できました"
End Sub