ここから本文です

マクロ初心者です 下記マクロを作ったのですが、動きません。 何がおかしいで...

leo********さん

2017/9/622:58:56

マクロ初心者です

下記マクロを作ったのですが、動きません。
何がおかしいでしょうか。

シート1のH2セルに文字列がある時
シート2のA:Cの表を参照し
シート3のAN2に結果を入力す



そして、シート1のH列に値がある限り上記のマクロを繰り返す


Sub test()

Dim i As String

i = sheets("シート1").Range("H2").Value

j = Worksheets("シート3").Range("AN2").Value = WorksheetFunction.VLookup(i, Sheets("シート2").Range("A:C"), 3, False)

For x= 2 To Sheets("シート1").Range("H" & Rows.Count).End(xlUp).Row
Sheets("シート3").Range("AN" & x) = j
Next x
End Sub

閲覧数:
49
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

web********さん

2017/9/623:21:07

1.
>シート1のH2セルに文字列がある時

この判定は行なっていないですよね

2.
j = Worksheets("シート3").Range("AN2").Value = WorksheetFunction.VLookup(i, Sheets("シート2").Range("A:C"), 3, False)

こんな計算式は成立しない

3.
>シート1のH列に値がある限り上記のマクロを繰り返す

For x= 2 To Sheets("シート1").Range("H" & Rows.Count).End(xlUp).Row
Sheets("シート3").Range("AN" & x) = j
Next x

コレだとシート3のAN列は全て同じデータになる


言葉通りマクロにすると

Dim x As Long

If Sheets("シート1").Range("H2") <>"" Then

For x= 2 To Sheets("シート1").Range("H" & Rows.Count).End(xlUp).Row

Worksheets("シート3").Range("AN2").Value = WorksheetFunction.VLookup(Sheets("シート1").Range("H2"), Sheets("シート2").Range("A:C"), 3, False)

Next

こんな感じかな

  • 質問者

    leo********さん

    2017/9/623:48:00

    ありがとうございます。
    しかし、私の指示文が間違ってました。

    >シート1のH列に値がある限り上記のマクロを繰り返す
    ではなく

    シート1のH列に文字列がある限り、シート3のAN列にシート2の検索結果を入力する

    でした。
    この場合はどうなりますか?

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

せっかくの機会が台無しです

みんなのアンテナ

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる