• ベストアンサー

VBAマクロ作成について

  A  B  C -------------- 1 ○○ 123 456 --------------- 2 □□ 789 123 --------------- 3 △△ 456 789 -------------- 上記のような表でInputBoxを使い「○○」と入力すると同じ行のB列「123」とC列「456」 「□□」なら「789」「123」のように値を取得し、変数に代入するような マクロを作成したいのですが、どのように記述すれば良いでしょうか。 初歩的な質問ですが、宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • suz83238
  • ベストアンサー率30% (197/656)
回答No.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

ryosan991
質問者

お礼

回答ありがとうございます。 無事に解決することができました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

何でこんあんことが必要か良くわからない質問だ。 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 色々なやり方がある。上記は簡潔なものを目指した。 だから初心者には目新しい点があると思う。

ryosan991
質問者

お礼

回答ありがとうございます。 恥ずかしい話ですが、そもそもVLOOKUP関数のことすら知りませんでした。 また、VBAの資格取得を目指しているので、その勉強のため 「何が何でもVBAで」という思いもありました。 VLOOKUP関数を使った方が簡単そうですが、ここは勉強のために 教えて下さった例を参考にVBAで作ってみたいと思います。