utlCOMStringsクラスについて

 utlCOMStringsクラスは、文字列操作を行うメソッドが集められたユーティリティクラスです。

メソッドの定義
Public Function Split(ByVal splitedString As String, _
                            ByVal splitingString As String) As Variant

文字列を引数splitingStringで指定される区切り文字で分割した文字列(1次元配列)を返します。
Public Function Replace(ByRef replacedString As String, _
                        ByRef oldString As String, _
                        ByRef newString As String) As String

文字列を置き換えます。
Public Function countStr(ByRef str1 As String, _
                        ByRef str2 As String, _
                        Optional ByVal compare As Long = 0) As Long

str1の中にstr2が何個あるか調べて返します。
Public Function lastInStr(Optional ByVal start = 1, _
                        Optional ByVal string1 = "", _
                        Optional ByVal string2 = "", _
                        Optional ByVal compare As Long = 0) As Long

string2でstring1を検索し、最後に見つかった場所を返します。
Public Function exportStr(ByRef str1 As String, ByVal objCol As Collection) As String
str1で2つの"で囲まれている部分を見つけ出し、その文字列("も含む)をobjColの末尾に退避させます。
2つの"で囲まれていた部分はChr(127)に置き換わります。
Public Function importStr(ByRef str1 As String, ByVal objCol As Collection) As String
exportStrで退避させた文字列を戻します。
Public Function getByteNo(ByVal str1 As String)
文字列のバイト数を返します。


メソッドの詳細
Split
Public Function Split(ByVal splitedString As String, _
                            ByVal splitingString As String) As Variant


メソッドの説明:
 文字列を引数splitingStringで指定される区切り文字で分割した文字列(1次元配列)を返します。(※1)

in引数:
splitedString:分割される文字列
splitingString:分割文字列

※1:Excel 2003には始めからSplit関数があります。(Excel X for Macには無い。(VBAのバージョンが5.00だから?))
Excel 2003にあるSplit関数と違いだるまが適当に作った関数との相違点。

だるまが適当に作ったSplit関数
Excel 2003標準のSplit関数
第1引数
splitedString:分割される文字列
expression:分割される文字列
第2引数
splitingString:分割文字列
省略不可
delimiter:分割文字列
省略すると" "(スペース)を指定したのと同じになる。
第3引数
ない
Excel 2003標準のSplit関数のlimt引数で-1を指定したのと同じ。
limit:返す配列の要素数を指定する。
-1(デフォルト値)を指定するとすべて区切る。
第4引数
ない
Excel 2003標準のSplit関数のcopare引数の何に対応しているんだろう?
compare:比較モード
(Option Compareステートメント・バイナリ・テキストの中から選ぶ)
第1引数が ""(空文字)だった場合
print(ubound(split("",",")))
 0
print(ubound(split("",",")))
  -1



Replace
Public Function Replace(ByRef replacedString As String, _
                        ByRef oldString As String, _
                        ByRef newString As String) As String


メソッドの説明:
 文字列を置き換えます。(※1)
in引数:
replacedString:置換対象文字列
oldString:検索文字列
newString:置換文字列
※1:Excel 2003には始めからReplace関数があります。(Excel X for Macには無い。(VBAのバージョンが5.00だから?))
Excel 2003にあるReplace関数と違いだるまが適当に作った関数との相違点。

だるまが適当に作ったReplace関数
Excel 2003標準のReplace関数
第1引数
replacedString:分割される文字列
expression:分割される文字列
第2引数
oldString:検索文字列
find:分割文字列
第3引数
newString:置換文字列
replace:置換文字列
第4引数 ない
Excel 2003標準のReplace関数のstart引数で1を指定したのと同じ。
start:検索開始位置
第5引数 ない
Excel 2003標準のReplace関数のcount引数で-1を指定したのと同じ。
count:置換する文字列数
第6引数
ない
Excel 2003標準のReplace関数のcopare引数の何に対応しているんだろう?
compare:比較モード
(Option Compareステートメント・バイナリ・テキストの中から選ぶ)

countStr
Public Function countStr(ByRef str1 As String, _
                        ByRef str2 As String, _
                        Optional ByVal compare As Long = 0) As Long


メソッドの説明:
  str1の中にstr2が何個あるか調べて返します。
in引数:
str1:検索対象文字列
str2:検索文字列
compare:文字列比較モード(省略すると0を指定したのと同じ)
       0:バイナリモード(大文字、小文字を区別する)
       1:テキストモード(大文字、小文字を区別しない)
備考:
str1もしくはstr2が空文字の時は0が返されます。
lastInStr
Public Function lastInStr(Optional ByVal start = 1, _
                        Optional ByVal string1 = "", _
                        Optional ByVal string2 = "", _
                        Optional ByVal compare As Long = 0) As Long


メソッドの説明:
   string2でstring1を検索し、最後に見つかった場所を返します。
in引数:
start:検索開始位置(よく考えたら、指定する意味が無い)
string1:検索対象文字列
string2:検索文字列
compare:文字列比較モード(省略すると0を指定したのと同じ)
       0:バイナリモード(大文字、小文字を区別する)
       1:テキストモード(大文字、小文字を区別しない)
備考:
VBAにあるStrings.InStr関数と引数を合わせたのですが、間違いでした。
何文字目まで検索するかという引数を持たせるべきでした。
exportStr
Public Function exportStr(ByRef str1 As String, ByVal objCol As Collection) As String

メソッドの説明:
 str1で2つの"で囲まれている部分を見つけ出し、その文字列("も含む)をobjColの末尾に退避させます。
 ※str1に含まれる"の個数が奇数個の場合、最後の"から文字列の最後までの部分文字列もobjColに退避させます。
in引数:
str1:文字列
objCol:2つの"で囲まれている部分文字列が末尾に追加される。(out引数ではありません。Nothingを入れないで下さい。)
返り値:
引数str1で2つの"で囲まれた部分をChr(127)にした文字列。
例:
 引数str1="abcd""123""efg""456"
 引数ojbCol={"""aaa""","""bbb"""}
の場合、exportStrメソッドを実行すると、
 引数str1="abcd""123""efg""456"         ※inout引数ではないので変化しない。
 引数ojbCol={"""aaa""","""bbb""","""123""","""456"}  ※引数で指定したコレクションオブジェクトの 末尾に2つの"で囲まれた文字列が追加される。
 返り値="abcd" & Chr(127) & "efg" & Chr(127)
となります。
importStr
Public Function exportStr(ByRef str1 As String, ByVal objCol As Collection) As String

メソッドの説明:
 str1に含まれるChr(127)をobjColにある文字列に置き換えます。
 objColにある文字列の個数よりstr1に含まれるChr(127)の方が多かった場合Chr(127)が残ります。
 objColからstr1へ置き換えた文字列はobjColからは取り除かれます。
in引数:
str1:文字列
objCol:文字列があるコレクション。
返り値:
引数str1に含まれるChr(127)をobjColにある文字列で置き換えた文字列。
例:
 引数str1="abcd" & Chr(127) & "efg" & Chr(127)
 引数ojbCol={"AAA","BBB","123","456"}}
の場合、importStrメソッドを実行すると、
 引数str1="abcd" & Chr(127) & "efg" & Chr(127) ※inout引数ではないので変化しない。
 引数ojbCol={"123","456"}  ※引数で指定したコレクションオブジェクトの先頭から2つの文字列が取り除かれる。
 返り値="abcdAAAefgBBB"
となります。

getByteNo
Public Function getByteNo(ByVal str1 As String)

メソッドの説明:
文字列のバイト数を返します。
in引数:
str1:文字列
返り値:
文字列のバイト数。
例:
"abcd"  ⇒4バイト
"aaああ" ⇒6バイト
"あい" ⇒4バイト
"" ⇒0バイト