作りながら学ぶVBAプログラミング

VBA Instr ではできない文字列検索

VBA Instr ではできない文字列検索を行いたい場面がよくあります。

perl 言語で言えば、index
php 言語で言えば、strpos

例えば、html 解析などで a タグを検索する場合

p = InStr(buff,”<a”)

ですが、ソースが <A と大文字で書かれていたら、あるいは、混在していたら InStr では対応できません。

大文字小文字を考慮せず文字列を検索する 汎用ライブラリ sPos

  • ライブラリー名
    vcmp
  • 種類
    Function
  • 書式
    戻り = sPos(検索対象文字列,検索文字列)

  • buff = “<img src=””~””><A HREF=””~””><br /><a href=””~””>”
    p = vcmp.sPos(buff,”<a”)
    print mid(buff,p)
    p = InStr(buff,”<a”)
    print mid(buff,p)
  • 結果
    <A HREF=””~””><br /><a href=””~””>”
    <a href=””~””>”
  • ソース
    Function ig(iStr0, iStr1)
    '
    '大文字小文字無視比較
    '
    'If vcmp.ig(buff,work)=0 then
    '
    'Endi If
    '
    Dim cStr0, cStr1
    cStr0 = LCase(toStr.toStr(iStr0))
    cStr1 = LCase(toStr.toStr(iStr1))
    If cStr0 = cStr1 Then
    ig = 0
    Else
    ig = 1
    End If
    End Function
    Function sPos(iStr, iTrg)
    sPos = ig_pos(iStr, iTrg)
    End Function
    Function ig_pos(iStr, iTrg)
    '大文字小文字無視位置検索
    '
    'dim p
    '
    'p = vcmp.ig_pos(buff,work)
    '
    Dim cStrV, cTrgV
    cStrV = LCase(toStr.toStr(iStr))
    cTrgV = LCase(toStr.toStr(iTrg))
    ig_pos = InStr(cStrV, cTrgV)
    End Function


vcmp.bas ダウンロード


vcmp.zip (276 ダウンロード )
ご自由にダウンロードしてお使いください。
ただし、著作権は放棄しておりません。オープンソースです。二次配布は改変後も含めて禁止いたします。

  • このエントリーをはてなブックマークに追加

関連記事

ゆずまる・ゆぅべぇ

システムエンジニア/プログラマ歴数十年のゆずまるです。

バナーにもあるように変体的な犬マニアで生まれてからこのかた犬のいない日は経験していません。
中でもコッカースパニエルとラブラドールが死ぬほど好き!

そんなゆずまるは、20数種類の様々な言語を使用してシステム開発をおこなってきました。

そこで使ってきた各言語の自作ライブラリ中のVBAのライブラリを公開しています。

※姉妹サイトに C,PHP などのサイトもネット上に浮遊させております。そちらでもお役にたてましたら無上の喜びw

あなたの一助になれば幸いです。