VLOOKUPトリガーをマクロにする(Microsoft Excel)
マイクはワークシートでVLOOKUPを定期的に使用していますが、値を返さない場合に関数にマクロを実行させる方法があるかどうか疑問に思っています。
この問題に取り組む方法はいくつかあります。まず、条件式を使用して、VLOOKUPが値を返すかエラーを返すかを決定できます。エラーが返される場合は、次のように、数式でユーザー定義関数(MyUDF)を実行できます。
=IF(ISERROR(VLOOKUP(B2,CODES,1,FALSE)),MyUDF(), VLOOKUP(B2,CODES,1,FALSE))
必要なのは、実際のVLOOKUPコードを数式に(2回)入れて、MyUDFをトリガーするユーザー定義関数の名前に置き換えることだけです。
別のアプローチは、Calculateイベントのイベントハンドラーを設定することです。
これは、次のようにかなり単純な場合があります。
Private Sub Worksheet_Calculate() If IsError(Range("A1")) Then Call Macro1 End Sub
この例では、VLOOKUP数式がセルA1にあり、VLOOKUPがエラーを返した場合にMacro1というマクロを実行することを前提としています。その後、マクロは必要なことを何でも実行できます。また、CalculateイベントハンドラーはThisWorksheetオブジェクトに配置する必要があることにも注意してください。
次に示すように、Calculateイベントハンドラーをもう少し堅牢にすることもできます。
Private Sub Worksheet_Calculate() On Error GoTo myMac Worksheets(1).Select If Range("A1").Value Then Exit Sub End If myMac: Macro1 'macro to run if VLOOKUP fails End Sub
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(10107)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。