別ブックのマクロを実行したときの結果
先日Excelで、別ブックにあるマクロを実行したときの出来事。
その時の状況は、以下のとおり。
- Book1のHOGEから、Book2のFUGAを実行
- FUGAがエラー終了
Sub HOGE() Application.Run "BOOK2!FUGA" End Sub
Sub FUGA() Range("A1") = "ふが" End Sub
HOGE側はFUGAが上手く行かなかった場合も、それなりに処理を継続したい。
そこで今回は、FUGA側をFUNCTIONプロシージャに変更して対応してみた。
Function FUGA() As Boolean ' エラー無視。 On Error Resume Next Range("A1") = "ふが" ' エラーの発生状況から、処理の成否を判断。 Select Case Err.Number ' エラーが発生していない場合。 Case 0: FUGA = True ' それ以外の(つまりエラーが発生している)場合。 Case Else: FUGA = False End Select ' エラー無視解除。 On Error GoTo 0 End Function
HOGE側は戻り値から、FUGAの成否を判断して次の処理に繋げる。
Sub HOGE() Select Case Application.Run("BOOK2!FUGA") Case True MsgBox "処理成功" Case Else MsgBox "処理失敗" End Select End Sub
結構便利なテクニックで、毎度重宝してます。
参考まで。