2015年8月30日日曜日

エクセル VBA 関数を使う

VBAから関数Matchを使う。 たとえば、対象Book(TargetBook)のシート("word")のエリア(A1:A20000)から”てきとう”を検索するにはこのようにする。
Dim r As Variant
    r = Application.WorksheetFunction.Match("てきとう", TargetBook.Sheets("word").Range("A1:A20000"), 0)
返り値 r には 行番号が入っています。
しかしながら、範囲内に検索文字がない場合にError となりますので、対応します。

Sub test()
    Dim r As Long
    r = 0
    On Error Resume Next
    r = Application.WorksheetFunction.Match("てきとう", TargetBook.Sheets("word").Range("A1:A20000"), 0)
    On Error GoTo 0
    If r = 0 Then Exit Sub
End Sub
また、Err.Numberを確認することで発生したErrorを特定することもできます。
Sub test()
    Dim r As Long
    r = 0
    On Error Resume Next
    r = Application.WorksheetFunction.Match("てきとう", TargetBook.Sheets("word").Range("A1:A20000"), 0)
    On Error GoTo 0
    If Err.Number > 0 Then 
        Err.Clear '次のエラーのためにクリアしておく
        Exit Sub
    End If
End Sub

0 件のコメント:

コメントを投稿