いくつかのコンテキスト: - 大きなテーブル (1000x1000) を構築しています - いくつかのケースに値 1 を入力したい - このケースのそれぞれの行と列を別のシートに持っています
これは、テーブルを埋めるために使用するコードです。ご覧のとおり、For ループで Range を使用しています。以前は、より小さなデータセットで機能していました。問題を引き起こしている行は次のとおりです: Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Sub FillEdges()
Dim rng As Range
For Each rng In Sheets("Feuil2").Range("A1:A53498")
Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Next rng
End Sub
いくつかの調査を行うと、時々ワークブックを保存し、閉じて、再度開く必要があることがわかりました。私はそれを試しましたが、VBAは「保存、閉じて、再度開く」コードを考慮していないようです。このヘルプページで何かを理解しようとしました:
http://support.microsoft.com/kb/210684/en-us
これにより、このコードでエラー 91 が発生しました。エラーは 3 行目にあります。
Sub FillEdges()
Dim rng As Range, mybook As Workbook
mybook.SaveAs "Macintosh HD:Users:Nicolas:test.xslm", FileFormat:=53
For Each rng In Sheets("Feuil2").Range("A1:A53498")
If rng Mod 2500 = 0 Then
mybook.Close SaveChanges:=True
Set mybook = Nothing
Set mybook = Application.Workbooks.Open("Macintosh HD:Users:Nicolas:test.xslm")
End If
Sheets("Feuil1.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1"
Next rng
End Sub
このエラー 91 を修正する方法を知っていますか?
したがって、これでエラー 1004 が完全に修正されるかどうかはわかりませんが、正しい方法だと思います。それとも、何か他のことをアドバイスしますか... ?
お時間をいただきありがとうございます。良い一日を過ごしてください。ニコラス。