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

VBA 文字列比較 大文字小文字を無視して比較する

VBA は、言語体系的に古い言語です。そのため文字列比較 大文字小文字を無視して比較するためにはサブルーチンを書かないといけなくなります。

例えば、大文字小文字比較は、
perl 言語で言えば、=~/xxx/ig
php 言語で言えば、strcasecmp

html 解析などで href を検索する場合

if buff=”href” then

ですが、ソースが HREF と大文字で書かれていたら、あるいは、Href などと混在していたら 結果は False です。

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

  • ライブラリー名
    vcmp

  • 種類
    Function

  • 書式
    戻り = vcmp.ig(比較文字列,比較文字列)

  • 戻り
    0:一致
    0以外:不一致


  • buff = "href"
    work = "Href"
    If vcmp.ig(buff,work)=0 then
    print "一致"
    Else
    print "不一致"
    Endi If
    If buff = work then
    print "一致"
    Else
    print "不一致"
    Endi If


  • 結果
    一致
    不一致

  • ソース
    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 (278 ダウンロード )
ご自由にダウンロードしてお使いください。
ただし、著作権は放棄しておりません。オープンソースです。二次配布は改変後も含めて禁止いたします。

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

関連記事

ゆずまる・ゆぅべぇ

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

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

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

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

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

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