プロが教えるわが家の防犯対策術!

For文でそれぞれのブックからコピーした値もやはり順不同なため並べ替えたいのですが、実行をしてもフリーズしてしまいます。
どこがいけないのでしょうか。
具体的にはFor文で得た会社名と売上げの数字を同Book内にもう一つ並べ替え用のsheet(会社名を書いてある)を作って売上げがの数字があるところだけ入れていきたいのです。

初心者なのでわかりにくいコードですみません。

Sub test01()

Application.ScreenUpdating = False

Dim i As Long 'コピー元の行
Dim j As Long ’コピー先の行
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = Worksheets(3) ’コピー先sheet
Set ws2 = Worksheets(2) 'コピー元sheet



For i = 2 To Rows.Count
For j = 2 To Rows.Count


If ws2.Cells(i, 2) <> "" Then
ElseIf ws2.Cells(i, 1).Value = ws1.Cells(j, 1).Value Then
ws1.Cells(j, 2) = ws2.Cells(i, 2).Value

End If
Next j

Next i

End Sub

A 回答 (1件)

こんばんは!



未検証ですが、
コードを拝見する限り
>Rows.Count
が指定されていませんね。

データの最終行までを示しているのであれば
変数を追加し、あらかじめ「Rows.Count」を指定する必要があります。
>For i = 2 To 最終行の変数
>For j = 2 To 最終行の変数
といった感じで・・・

当然 i の部分の「最終行」と  j の部分の「最終行」は別の変数になると思います。

※ 指定がないと、シートの最終行までループしてしまうのでは?m(_ _)m
    • good
    • 0
この回答へのお礼

Rows.Countの変数というのがよくわからなかったのですが、
確かに、どのセルのRows.Countなのか指定していませんでした!
変数というのはこの長い部分を変数に置き換えるという意味ですか?

For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row

と書き足してみたのと
条件式が間違っていたので<>を除いてみたらできました!!
ありがとうございます。

お礼日時:2019/08/21 00:15

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