別の開いているワークブックにある目的の範囲をユーザーに入力するように求める VBA プログラムがあります。エラーが発生した場合、つまり、他のワークブックが手動でアクティブ化されたが範囲が選択されていない場合、またはエラーが発生した場合、プログラムで元のマクロ ワークブック シートをエラー メッセージとともに表示するようにします。以下のコードはデバッグ モードで動作しますが、VBA プログラムを実行すると、エラーは正しく表示されますが、元のマクロ ワークシートは表示されません。ユーザーが手動でアクティブ化したシートに残ります。私は何が欠けていますか?
以下のコードで、「HMArea」は、ユーザー入力を取得するルーチンによって返される Range 変数です。「Macro_Fname」は、元の VBA プログラムのファイル名の文字列変数です。
HM_file = FileName(HMArea)
If HM_file = "Macro_Fname" Then
Windows("Macro_Fname").Activate
Sheets("[name of the sheet in Macro_Fname]").Select
Range("D4").Select
MsgBox "ERROR: No data selected"
Exit Sub
End If