|
新田 哲二 さん、こんにちわ。
>Excel2003で動かしている処理において例外エラーは発生するため、問題の所在を確認するためにその処理ロジックだけを抜き出して(以下)動作させましたところ、Excel2003では約5000回、Excel2007では10,700近辺で例外が発生します。一回も完了を経験していません。使用しているPCのいずれにおいてもほぼ同じポイントで発生します
>何かシステムリソースを消費しているのか、制限事項があるのか分かりません。どなたか、回避方法をご存知に方がありましたら教えていただきたいのですが。
ちょっと加工して、こういうマクロでテスト(ステータスバーにログを表示)しました。環境はWinXP & XL2003SP3です。
Sub Sheet_Add_Del_Loop()
Dim Count As Integer, ws As Worksheet
Dim シート名 As String
Count = 1
With Application
.DisplayAlerts = False
.ScreenUpdating = False
Do While Count <= 12000
On Error GoTo エラー処理
With .ActiveWorkbook
Set ws = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count)) 'シートを最後のシートの後へ挿入
End With
s1 = Count & " " & ws.Cells(Count).Address(0, 0, external:=True)
.StatusBar = s1
ws.Delete
Set ws = Nothing
' +1
Count = Count + 1
Loop
.DisplayAlerts = True
.ScreenUpdating = True
.StatusBar = False
End With
MsgBox s1, vbInformation, "完了"
Exit Sub
'
エラー処理:
MsgBox "Err" & Count, vbCritical, Error(Err)
On Error GoTo 0
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = False
MsgBox s1, vbExclamation, "中断"
End Sub
以下、実験結果。
VBEを起動して、
VBEから直接実行 × 5850回前後で終了(エラー終了)
VBEを後ろに隠してワークシートメニューバーのツール→マクロ × 上と同様
VBEを起動せずに、
ワークシートメニューバーのツール→マクロ ○ 無事に完了
シートにボタンを置いて、マクロを登録しクリックして実行 ○ 無事に完了
ツールバーにコマンドボタンを配置しマクロを登録して実行 ○ 無事に完了
というわけで上のマクロだと、VBEを起動せずに実行するとエラーになりませんでした。VBEを起動しているとステータスバーへのログの表示が遅くなる(3桁目が簡単に読めるようになる)のでここでかなり負荷がかかってる気がします。
|
|