「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

Excel VBAをはじめから(その06/X)

 仕事で未だに使うことのある\mathrm{Excel\ VBA}を改めて体系的に学びたく

を読んでいく。


power-of-awareness.com

4. 「文字列」と「日付」と「時間」の扱い方

4.1 文字列の扱い方

4.1.1 文字列の基本はダブルクォーテーションで「囲む」

 \mathrm{VBA}で扱う際には「""」(ダブルクォーテーション)で文字列を囲む。

  • 特殊な文字列を表す定数の代表例
定数
内容
\mathrm{vbCr} \mathrm{Chr(13)} キャリッジリターン*1
\mathrm{vbLf} \mathrm{Chr(10)} ラインフィード*2
\mathrm{vbCrLf} \mathrm{Chr(13)}\&\mathrm{Chr(10)} キャリッジリターンとラインフィード
\mathrm{vbNewLine} \mathrm{Chr(13)}\&\mathrm{Chr(10)}

または\mathrm{Chr(10)}
\mathrm{Win},\mathrm{Mac}のプラットフォームに応じた標準改行文字
\mathrm{vbTab} \mathrm{Chr(9)} タブ
4.1.2 文字列の情報や一部分を取り出す関数
関数
説明
\mathrm{Len} 文字列を調べる*3
\mathrm{InStr} 文字列内の指定した文字列のある場所を調べる
\mathrm{InStrRev} 文字列内の指定した文字列のある場所を逆から調べる
\mathrm{Right} 文字列の右から指定した文字数だけ取り出す
\mathrm{Left} 文字列の左から指定した文字数だけ取り出す
\mathrm{Mid} 文字列の指定した位置から指定した文字数だけ取り出す
' Len:長さを調べる
Dim str As String
str = Len("VBA")
Debug.Print str


'InStr:文字が含まれている位置
str = "VBA"

If InStr(str, "VBA") > 0 Then
    MsgBox "変数strに「VBA」という文字列が含まれている"
End If


'Right,Left,Mid:文字列の位置を調べる
Right("Excel VBA", 3)
Left("Excel VBA", 3)
Mid("Excel VBA", 3,3)

4.2 文字列を変換する関数

 文字列を整えたり、任意の値を基に「型にはめた文字列」を作成したりする関数も用意される。

関数
説明
\mathrm{Trim}
文字列左右の余分なスペース(空白)を取り除く
\mathrm{Ltrim}
文字列左側の余分なスペース(空白)を取り除く
\mathrm{Rtrim}
文字列右側の余分なスペース(空白)を取り除く
\mathrm{Replace}
文字列内の任意の文字列を置き換える
\mathrm{StrConv}
大文字・小文字・ひらがな・カタカナ・全角・半角を統一する
\mathrm{Format}
指定した値を任意の表示形式で表示した文字列を返す
4.2.1 文字列の形式を統一する

 文字列中の「ひらがな/カタカナ」「全角/半角」「大文字/小文字」などの表記を統一するのに\mathrm{StrConv}関数を用いる。

StrConv(置き換え対象文字列,変換ルール)
  • 第2引数に指定する定数
関数
形式
\mathrm{vbUpperCase}
1
大文字に変換
\mathrm{vbLowerCase}
2
小文字に変換
\mathrm{vbProperCase}
3
先頭の文字を大文字に変換
\mathrm{vbWide}
4
全角文字に変換
\mathrm{vbNarrow}
8
半角文字に変換
\mathrm{vbKatakana}
16
カタカナに変換
\mathrm{vbHiragana}
32
ひらがなに変換
\mathrm{vbUnicode}
64
既存のコードページから\mathrm{Unicode}に変換
\mathrm{vbFromUnicode}
128
\mathrm{Unicode}から既定のコードページに変換

4.3 正規表現

 \mathrm{VBA}正規表現を利用するには、\mathrm{RegExp}オブジェクトを用いる。\mathrm{RegExp}オブジェクトを用いるには、\mathrm{CreateObject}関数の引数に\mathrm{VBScript.RegExp}を指定して実行する。

プロパティ/

メソッド
用途
\mathrm{Global}プロパティ
全体を対象にするか、最初の1つが見つかった時点で終了するかを真偽値(\mathrm{True},\mathrm{False})で指定
\mathrm{Pattern}プロパティ
パターン文字列を指定
\mathrm{Execute}メソッド
マッチングを行なう。結果を\mathrm{Matches}コレクションの戻り値として返す
\mathrm{Replace}メソッド
\mathrm{Pattern}プロパティに指定したパターンの箇所を任意の文字列に置き換えた結果を返す
\mathrm{Test}メソッド
マッチングするものがあるかどうかをテストし、結果を真偽値で返す
  • \mathrm{RegExp}オブジェクトで利用できるメタ文字の例
メタ文字/
マッチする要素
.
改行を除く任意の1文字
[ABC]
指定された任意の1文字(AかBかC)
[^ABC]
指定されていない任意の文字列(A・B・C除く文字)
?
直前パターンの0~1回までの繰り返し
+
直前パターンの1回以上の繰り返し
*
直前パターンの0回以上の繰り返し
^
文字列の先頭
$
文字列の末尾
\n
改行
\r
キャリッジリターン
\t
タブ文字
\d
数字
\D
数字以外
\s
スペース文字
\S
スペース文字以外
\
メタ文字のエスケープ文字。「\?」は「?」にマッチ
( )
後方参照時のグループを指定
$1 $2 …
後方参照時の各グループ文字

マッチングの結果は\mathrm{Matches}コレクションの形で返され、そこから個々のマッチング結果へとアクセスする。

*1:文字コード体系において、カーソルを文頭へ戻すことを表す制御文字。

*2:文字列を操作するための非表示文字である制御コードのひとつで、カーソルを次の行へ送ること。

*3:半角・全角を問わず、1文字を長さ1と数える。

プライバシーポリシー お問い合わせ