- ベストアンサー
VBAマクロ作成について
A B C -------------- 1 ○○ 123 456 --------------- 2 □□ 789 123 --------------- 3 △△ 456 789 -------------- 上記のような表でInputBoxを使い「○○」と入力すると同じ行のB列「123」とC列「456」 「□□」なら「789」「123」のように値を取得し、変数に代入するような マクロを作成したいのですが、どのように記述すれば良いでしょうか。 初歩的な質問ですが、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記S1とS2に目的のものが入ります。なお、該当がないとエラーになります。 Sub xxx() nam = InputBox("名前は?") s1 = ActiveSheet.Cells.Find(nam).Offset(, 1) s2 = ActiveSheet.Cells.Find(nam).Offset(, 2) MsgBox s1 & vbCrLf & s2 End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
何でこんあんことが必要か良くわからない質問だ。 VBAでやる必要も無いように思う。 VLOOKUP関数で出来るのに。 VBAでやるという発想が、VBAを学んだので、何が何でも使うという自己固執型では。 123,456などはずっと変わらない固定した値なのでしょうね。 別シートに(Sheet2とする) aa 123 456 bb 789 123 cc 456 789 ・・ のデータを作る。 ーー Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then x = Worksheets("Sheet2").Range("A:A").Find(what:=Target).Row 'MsgBox x Target.Offset(0, 1) = Worksheets("Sheet2").Range("A:A").Find(what:=Target).Offset(0, 1) Target.Offset(0, 2) = Worksheets("Sheet2").Range("A:A").Find(what:=Target).Offset(0, 2) End If End Sub 結果1例 aa 123 456 bb 789 123 cc 456 789 bb 789 123 色々なやり方がある。上記は簡潔なものを目指した。 だから初心者には目新しい点があると思う。
お礼
回答ありがとうございます。 恥ずかしい話ですが、そもそもVLOOKUP関数のことすら知りませんでした。 また、VBAの資格取得を目指しているので、その勉強のため 「何が何でもVBAで」という思いもありました。 VLOOKUP関数を使った方が簡単そうですが、ここは勉強のために 教えて下さった例を参考にVBAで作ってみたいと思います。
お礼
回答ありがとうございます。 無事に解決することができました。