WorksheetFunction.RTD()がうまくいく時とうまくいかない時がある
Excelが忙しいらしいので、Application.Ready = Trueをチェックする。
'Excel のバージョンが 2002 以降の時
If Val(Application.Version) >= 10 Then
'アプリケーションの状態を確認し、準備ができている場合だけ処理を行います。
If Application.Ready = True Then
<実行したい処理をここに記述します。>
End If
'Excel のバージョンが 2000 以前の時は、そのまま処理を続けます。
Else
<実行したい処理をここに記述します。>
End IfReady プロパティが False の時、強制的に True に戻すには
Sendkeys "{ESC}"など、なんとかしてExcelを落ち着かせる必要がある。
ネタ元