rsinz’s diary

趣味コードや日記のブログです。文章をうまく書けるようになりたい。

プリミティブ変数型を拡張したい(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型に挑戦したいと思います。