アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelのVBA For Nexについて

Forをネストするとき、インデントを合わせないと正しく作動しないとありました。個人的になんですが、インデントで、国語で言うところの段落を合わせるという認識であってますでしょうか?

そして、下記のコードですが、


Sub 転記()

Dim ws As Object, ww As Object
Dim j As Long, i As Long

Set ws = Worksheets("AAAA")
Set ww = Worksheets("BBBB")


For j = 2 To 200

      For i = 7 To 200
         ww.Cells(3, j) = ws.Cells(i, 2)
       Next i
Next j

  
End Sub

この結果は何も反応しません

下記ならば反応します。以前 Foe Next の中にFor Nextを入れても茶道しないと教わりましたので、下記のようにしています。

Sub 転記()

Dim ws As Object, ww As Object
Dim j As Long, i As Long

Set ws = Worksheets("AAAA")
Set ww = Worksheets("BBBB")

i =7
For j = 2 To 200

ww.Cells(3, j) = ws.Cells(i, 2)

Next j
End Sub


でも、ネストを使ったFor Nextはよく見かけます。

Sub 転記()

Dim ws As Object, ww As Object
Dim j As Long, i As Long

Set ws = Worksheets("AAAA")
Set ww = Worksheets("BBBB")


For j = 2 To 200
     For i = 7 To 200
      ww.Cells(3, j) = ws.Cells(i, 2)
     Next i
Next j


End Sub

上記コードのどこが悪いのでしょうか?
本当にくだらない質問ですが、ご教示していただけないでしょうか。
お手数ですが、よろしくお願いします。

A 回答 (2件)

プログラムは動作します.


シートAAAA の セルB200 に,数字か文字をいれてから実行すると分かります.

(貴方が,どういった動作をするプログラムなのかを理解していない気がします)

初め,j=2 なので
シートBBBB のセル"B3" に,シートAAAAの中身をB7からB200まで順にコピーします.
ここで,「7からB200まで順に 」なので 最後の表示は B200の中身だけが表示されます.

これがj=2~200なので,
シートBBBB のセル B3 ~ GR3 まで同じ内容(AAAAのB200の中身) が表示されます
    • good
    • 0
この回答へのお礼

良くわかりました。ありがとうございました。

お礼日時:2019/07/06 16:42

VBAの処理が遅いから、ループ回数が多いと、動作しているのに、反応しないように感じてしまうってことですね。


ちゃんと動作しています。

インデントは人間の目でみて分かりやすいようにするだけです。
コンピュータ的には、インデントが無いほうがちょっと速いかもしれない。
    • good
    • 0
この回答へのお礼

良くわかりました。ありがとうございました。

お礼日時:2019/07/06 16:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!