みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA 実行時エラー'1004':

 どちらの処理がより高速であるのかを調べるため、以下の2つのVBAを試作致しました。

Sub Macroコピペ乱数()
'コピペ乱数

Sheets("Sheet4").Select
Range("A1:A99999").Formula = "=RAND()"
Columns("A").Value = Columns("A").Value
Range("B1").Select

End Sub

及び

Sub Macro繰り返し乱数()
'繰り返し乱数
Dim i As Long
Randomize
Sheets("Sheet4").Select
For i = 1 To 99999
Range("A" & i).Value = Rnd
Next i
Range("B1").Select

End Sub

 処が、これらのVBAを実際に動作させ様としますと、どちらの場合においても「Microsoft Visual Basic」ダイアログボックスが開いて

「実行時エラー'1004':
'Range'メソッドは失敗しました:'_Global'オブジェクト」

と表示されてしまいます。
 さりとて、

Sub Macroコピペ乱数()
'コピペ乱数

Sheets("Sheet4").Select
ActiveSheet.Range("A1:A99999").Formula = "=RAND()"
Columns("A").Value = Columns("A").Value
Range("B1").Select

End Sub

及び

Sub Macro繰り返し乱数()
'繰り返し乱数
Dim i As Long
Randomize
Sheets("Sheet4").Select
For i = 1 To 99999
Range("A" & i).Value = Rnd
Next i
Range("B1").Select

End Sub

或いは

Sub Macro繰り返し乱数()
'繰り返し乱数
Dim i As Long
Randomize
Sheets("Sheet4").Select
For i = 1 To 99999
Range(Cells(i, 1)).Value = Rnd
Next i
Range("B1").Select

End Sub

等としましても、今度は

「実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラーです。」

となってしまいます。
 どの部分がどの様に悪いのでしょうか?
 そして、どの様に修正すれば良いのでしょうか?

 尚、使用しておりますExcelのバージョンはExcel2010です。

投稿日時 - 2012-12-08 13:56:29

QNo.7835325

暇なときに回答ください

質問者が選んだベストアンサー

いずれのエラーも、ブックが互換モード(65536行まで)で開かれているときの症状に合致します。
xlsm形式などで保存し直してから、動作をご確認ください。

なお、最後のマクロの
Range(Cells(i, 1)).Value = Rnd

Cells(i, 1).Value = Rnd
の誤りと思われます。

投稿日時 - 2012-12-08 14:21:17

お礼

 御回答頂き有難う御座います。

>いずれのエラーも、ブックが互換モード(65536行まで)で開かれているときの症状に合致します。

 セル範囲の設定を9999行にして試した際に、処理に要する時間が短過ぎまして、ストップウォッチを押す暇も十分には無かったため、行数を順次増やしていっている内に、間抜けな事にExcel97-2003互換モードで利用可能な行数を超えておりました。
 御教え頂き、感謝致します。

投稿日時 - 2012-12-08 15:34:43

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問