Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Excel VBA】文字列比較演算子「like」の使用方法


ExcelVBAにて拡張子の比較をしようとした時に、はじめはうまくいかなかったのですが、「like」演算子を使用してうまくいったということがありました。

 

ということもあり、結構使えそうかと思ったので「like」演算子について備忘録として残しておきます。

 

 

 

目次

 

1.likeの使用方法

 

「like」演算子は、文字列の比較を行う時に使用する演算子で、一致していれば「True」、不一致なら「False」を返します。

 

使い方はたとえば以下のようになります。

 

result = string Like pattern

 

上記の場合、stringが比較元の文字列、patternが比較対象文字列で、一致していればresultに「True」が、不一致なら「False」が入ります。

stringまたはpatternの文字列のどちらかが「Null」の時は結果のresultもNullとなります。

patternにはワイルドカードなども使え、パターンマッチング規則に沿った文字列を入れます。

 

 

ワイルドカードなどで入れられるものには以下のようなものがあります。

 

文字 説明
? 任意の1文字
* 任意の数の文字
# 0~9の半角数字
[charlist] charlistに指定した全角または半角の1文字
[!charlist] charlistに指定した全角または半角の1文字

 

また、"[]"と"-"を使って[A-Z]と記載すると、AからZまでのいずれかの一文字と一致していれば「True」、[1-9]と記載すると、1から9までのいずれかの一文字と一致していれば「True」となります。

 

 

たとえば、以下のように記載すると、

 

If string Like pattern Then
    処理
End If

 

「string」が「pattern」と一致している時に「処理」に記載の処理を実行します。

 

 

2.使用例

 

実際に適用して価値があったのは、以下のようなものでした。

 

はじめに以下のように記載して同じフォルダ内の「.xls」ファイルを抜き出そうとしたところ、「.xls」ファイルだけではなくて、「.xlsx」ファイルや「.xlsm」ファイルも抜き出されてしまいました。

 

Dim buf As String, cnt As Long
Path = ActiveWorkbook.Path + "\"
cnt = 10
buf = Dir(Path & "*.xls")
Do While buf <> ""
    cnt = cnt + 1
    Cells(cnt, 1) = buf
    buf = Dir()
Loop

 

これを、「like」演算子を使って以下のようにしたところ、「.xls」ファイルだけ抜き出されるようになりました。

 

Dim buf As String, cnt As Long
Path = ActiveWorkbook.Path + "\"
cnt = 1
buf = Dir(Path & "*.xls")
Do While buf <> ""
If LCase(buf) Like "*.xls" Then
Cells(cnt, 1) = buf buf = Dir()
    cnt = cnt + 1
Loop

 

はじめの例では、文「.xls」が含まれるものということで、「.xls」以外に「.xlsx」や「.xlsm」も含まれてしまいますが、2つ目の例にあるように、

  If LCase(buf) Like "*.xls" Then 

を加えることで、「.xls」だけが抜き出されます。

 

ちなみに、LCaseは大文字があれば小文字に変更するというものです。

 

これにより、はじめにやりたかった「.xls」ファイルだけを抜き出すということができました。

 

 

 

関連記事:

【Excel VBA 文字列変換】大文字小文字変換方法、全角半角変換方法 - Django Girls and Boys 備忘録

 

【Excel VBA】文字列比較演算子「like」の使用方法 - Django Girls and Boys 備忘録

 

【Excel VBA】ファイル一覧やファイル有無確認に使われるDir()の使用方法 - Django Girls and Boys 備忘録

 

【Excel】プルダウンリストの設定方法 - Django Girls and Boys 備忘録

 

【Excel VBA】行の高さの取得、調整、自動調整をする方法 - Django Girls and Boys 備忘録

 

【Excel VBA】改行コード(CR、LF、CRLF)の使用方法 - Django Girls and Boys 備忘録

 

【Excel VBA】ソースコードの改行方法 - Django Girls and Boys 備忘録

 

【Excel】の「開発」タブを表示させる方法 - Django Girls and Boys 備忘録

 

【Excel】ボタンの表示文字を改行する方法 - Django Girls and Boys 備忘録

 

【Excel】プルダウンリスト 設定方法、元データ追加方法、元データ変更方法 - Django Girls and Boys 備忘録

 

【Excel VBA】結合セルのコピー方法について - Django Girls and Boys 備忘録

 

【Excel VBA】あるシートのセル範囲に変更があった時に処理を実行する方法 - Django Girls and Boys 備忘録

 

【Googleサーチコンソール Googleアナリティクスの登録方法】サイト作成後の分析、活用に欠かせない登録 - Django Girls and Boys 備忘録

 

【Excel 名前の定義】「名前"○○○"は既に存在します。この名前にする・・・」のメッセージ表示を解決する方法 - Django Girls and Boys 備忘録

 

【Excel マクロ(VBA) 行削除】条件を満たした行を削除する方法(For~Next文を使用) - Django Girls and Boys 備忘録

 

【Excel マクロ(VBA)】最大行番号、最大列番号を取得する方法 - Django Girls and Boys 備忘録

 

【ExcelマクロからのI.E.操作】I.E.のセキュリティに絡むエラー(オートメーションエラー)発生時の対応方法 - Django Girls and Boys 備忘録

 

【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録

 

【Excel VBA】シート削除時などに確認メッセージを表示しない方法 - Django Girls and Boys 備忘録

 

【Excel】数式の計算方法について、計算方法の自動/手動変更方法 - Django Girls and Boys 備忘録