|
前回の質問では質問内容が2つあったため、一方の質問に回答が集中してしまい、こちらの回答が得られなかったので、繰り返しになりますが質問させてください。
下記のようなコードで繰り返しの処理を行うと、パソコンがフリーズしてしまいます。
最大5万回の処理を5万回繰り返すので、結局5万*5万回になります。
回数は多いにしても、処理そのものはひとつづつ順次に行われるものだと勝手に思っています。
このような場合、どうしてPCがフリーズしてしまうのですか?
Sub データ取得1個()
Dim Count, aaa As Long
Set ACELL = ActiveCell '検索元
Set BCELL = ActiveCell.Offset(0, -3) '検索先
aaa = 50000 ’←処理数が2000ならまったく問題ない。
Count = 0
Count1 = 0
Do Until Count1 = aaa '検索元を100行実行
Do Until Count = aaa 'データベース(検索先)を100行検索
If ACELL = BCELL Then '見つかった場合
ACELL.Offset(0, 1) = BCELL.Offset(0, 1) 'データの書き込み
Count = 0 '検索先のデータ検索数
Exit Do
Else '見つからなかった場合
Set BCELL = BCELL.Offset(1, 0) '検索先を次に変更
Count = Count + 1 '検索先のデータ検索数
End If
Loop
Set ACELL = ACELL.Offset(1, 0)
Set BCELL = ActiveCell.Offset(0, -3)
Count1 = Count1 + 1 '検索元のデータ検索数
Count = 0
Loop
MsgBox aaa & "個処理が終了しました。"
End Sub
|
|