Notes 6 からは Split 関数というものが追加されました。この関数はスペースやカンマなどが含まれた文字列を任意のキーで文字列配列化することができます。これを R5 で使いたい場合、自分でコーディングする必要があります。結構良く使うのでファンクションを書いてみました。
ひとつのファンクションで解決させずに2つのファンクションを使うことで実現してみました。1つめの SxSplit() というのが R5 で Notes 6 の Split() と同じようなことを実現する仕組みです。Notes 6 の Split とほぼ同様ですが、引数が少ないです。最初に文字列、2つめの引数には区切り文字として認識させたいものを書きます。2つめの SxCountQuery は1つめの引数の文字列に、2つめの引数の文字が何回出現するかチェックしているものです。SxCountQuery() 単体でも汎用的に使えそうなので分けてみました。少しは便利に使えそうでしょうか?
今後このコードを改良して Notes 6 と同じ引数を持つ関数に変えて、ノーツ R5 でも Notes 6 でも使える Wrapper にしようと思います。
ひとつのファンクションで解決させずに2つのファンクションを使うことで実現してみました。1つめの SxSplit() というのが R5 で Notes 6 の Split() と同じようなことを実現する仕組みです。Notes 6 の Split とほぼ同様ですが、引数が少ないです。最初に文字列、2つめの引数には区切り文字として認識させたいものを書きます。2つめの SxCountQuery は1つめの引数の文字列に、2つめの引数の文字が何回出現するかチェックしているものです。SxCountQuery() 単体でも汎用的に使えそうなので分けてみました。少しは便利に使えそうでしょうか?
Function SxSplit(Byval expression As String, delimiter As String) As Variant
Dim count As Integer
Dim i As Integer, p As Integer
Dim length As Integer
Dim tmpArray As Variant
count = SxCountQuery(expression, delimiter)
Redim tmpArray(count)
i = 0
length = Len(delimiter)
p = Instr(expression, delimiter)
Do While p > 0
tmpArray(i) =Left(expression, p - 1)
i = i + 1
expression = Mid(expression, p + length)
p = Instr(expression, delimiter)
Loop
tmpArray(i) = expression 'Add the leftover to the last array
SxSplit = tmpArray
End Function
Function SxCountQuery(Byval expression As String, query As String) As Integer
Dim count As Integer, p As Integer
Dim length As Integer
count = 0
length = Len(query)
p = Instr(expression, query)
Do While p > 0
count = count + 1
expression = Mid(expression, p + length)
p = Instr(expression, query)
Loop
SxCountQuery = count
End Function
今後このコードを改良して Notes 6 と同じ引数を持つ関数に変えて、ノーツ R5 でも Notes 6 でも使える Wrapper にしようと思います。