Worksheet_Activate()イベントのあるシートを別ブックにコピーした時、コンパイルエラーを起こしたくない

Anonymous
2020-04-27T07:45:22+00:00

ExcelのVBAにて、アプリケーションを作成しています。

件名の通り、シートにWorksheet_Activate() イベントを用意し、

処理を標準モジュールに記載して呼び出しています。

そのシートを、手作業による操作(シートを選択→右クリック→移動またはコピー)で

別ブックを選択して別ブックにコピーした際、移動先のブックでコンパイルエラー(SubまたはFunctionが定義されていません)が発生します。

コンパイルエラーは、Worksheet_Activate() イベント内で、標準モジュールにあるメソッドを呼び出しているところです。

コンパイルエラーのため、On Error Resume Next を設定してもメッセージが表示してしまいます。

コードで、コンパイルエラーを発生させないようなことはできるのでしょうか?

または、みなさまこういう場合はどのように対処しているでしょうか?

#VBAのプロパティ設定でメッセージボックスを非表示にする方法は知っていますが、

 ユーザーの設定を変更することはできないため、On Error のように出来ないかと。

#今のところ、説明書に「別ブックにコピーしたらこのウィンドウが出るので、<OK>で閉じてください。」と記載する予定です。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
Anonymous
2020-04-27T08:15:11+00:00

標準モジュールのマクロを呼び出しているだけならば、

ThisWorkbook モジュールの Workbook_SheetActivate イベントを

利用して、下記のようにシート名をチェックして、マクロをCall

すれば良いでしょう。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

  If (Sh.Name = "Sheet1") Then

        MsgBox "Activate"     ' Call 標準モジュールのマクロ

    Else

        ・・・

    End If

End Sub

その代わり、シートモジュールのActivateイベントは削除します。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-04-27T23:10:02+00:00

    ありがとうございます!

    そのようなテクニックがあったのですね。

    ExcelVBAは10年以上ですが、知りませんでした。

    質問して良かったです。ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません