質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

1回答

1280閲覧

Excel VBAのループについて

naonaokeiyu

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/05/12 07:28

編集2020/05/12 09:14

ExcelのVBAでループについて、質問があります。

ループを勉強していて、わからないことがあります。

やりたいこと

Sheet2の表を参照して、Sheet1へ転記したいのです。
転記したい内容は5列です。
その列をループさせたいのです。

下記のコードを実行すると、作動はします。
しかし、Sheet1のA列しか参照できなく、B列~E列は参照されないようなのです。

どこがおかしいのか、お手数ですがご教示していただけないでしょうか?
よろしくお願いします。

Sub ????()
Dim a As Worksheet
Dim h As Worksheet
Set a = Worksheets("Sheet1")
Set h = Worksheets("Sheet2")
Dim myR As Variant
Dim key As Variant
Dim j As Long

maxrow = Cells(Rows.Count, "A").End(xlUp).Row

For key = 2 To maxrow '?Q??????l For j = 6 To 10 With Application i = 1 myR = .Index(h.Range("D:D"), .Match(a.Cells(key, i), h.Range("C:C"), 0)) If IsError(myR) = True Then Cells(key, j) = "" Else Cells(key, j) = myR i = i + 1 End If End With Next j Next key

End Sub

Sheetイメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2020/05/12 08:46

Sheet1,Sheet2の内容を画像にして提示していただけませんでしょうか。 Sheet1はマクロ実行前及び実行後に分けて提示していただけると更にわかりやすいです。
guest

回答1

0

ベストアンサー

i = 1がループの中に入ってしまっているのが原因です。

VBA

1For key = 2 To maxrow '?Q??????l 2 i = 1 3 For j = 6 To 10

iを初期化するのはこの位置です。
F8を押して一行ずつステップ実行してみると原因がわかりやすいですよ。

投稿2020/05/12 09:03

ryuno_vanilla

総合スコア119

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naonaokeiyu

2020/05/12 09:19

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問