プリミティブ変数型を拡張したい(String編)
VBAのプリミティブ型(IntegerとかStringとか)に.netっぽく書けるように、オリジナルの機能を付けたいと思い、コードを書きました。
GitHubからclsStringをダウンロードして、VBEにインストールしてください。
vba/Class at master · rsinz/vba · GitHub
以下、クラスの機能です
Property
Value: Get/Setプロパティ。デフォルトプロパティに設定しています。
Plus: 内部保持値に結合
PlusAndLine: 内部保持値に改行して結合
ToInt: Integer型にして返す
ToLong: Long型にして返す
ToLower: 大文字 -> 小文字にして返す
ToNarrow: 全角-> 半角 にして返す
ToWide: 半角-> 全角 にして返す
IsString: String型かどうか判定
IsEmpty_: 空文字かどうか判定
Length: 文字列の長さを返す
Method
Mid_: 指定された文字以降(以前)の文字列を抜き出す
Insert: 文字列の挿入
InStr_: 指定文字列の最初(最左)の位置。StringExを直接InStr()に入れるとバグるため。
InStrLast: 指定文字列の最後(最右)の位置。
CountOf: 指定文字列がいくつ含まれているか
GetClipboard: クリップボードのテキスト取得
SetClipboard: クリップボードにテキストを設定
ToText: テキストファイルに文字列追加
Log: Logテキストファイルに出力。Logファイルが無かったら作る
RegexInit: Regexの初期化。正規表現を使いたいときに (ユーザー入力の妥当性チェックとか)
RegexIsMatch: 指定文字列にパターンが含まれているかどうか
RegexMatch: 指定文字列内にパターンが含まれていたら一致した最初の文字列だけ返す
RegexMatches: 指定文字列内にパターンが含まれていたらitemコレクションとして返す。
RegexReplace: 指定文字列内にパターンが含まれていたら指定文字列に置き換えて返す
使い方
一部の機能のサンプルです。
Sub testString() Dim str_ As New StringEx str_ = "abcABC" Debug.Print str_ ' abcABC Debug.Print str_.CountOf("a") ' 1 Debug.Print str_.Insert(4, "_") ' abc_ABC Debug.Print str_.InStr_("c") ' 3 Debug.Print str_.ToUpper ' ABCABC str_.SetClipboard Debug.Print str_.GetClipboard ' abcABC str_.ToText ("C:\test.txt") End Sub
思いつくままにプロパティ/メソッドを書きました。
あと、一部いげ太様のAriawaseを参考にしています。
github.com
※StringExを直接InStr関数に入れるとエラーが出ます。謎です。ReplaceとかTrim関数だとうまく動いてくれます。
内容は以上です。
次回はDate型に挑戦したいと思います。