Sub StrComp1()
MsgBox "aとbを比較 戻り値" & StrComp("a", "b")
End Sub
数値で比較
Sub StrComp2()
MsgBox "1と2を比較 戻り値" & StrComp(1, 2)
End Sub
ひらがなで比較
Sub StrComp3()
MsgBox "あといを比較 戻り値" & StrComp("あ", "い")
End Sub
それぞれstring1 < string2 のため戻り値が-1です。
string1 が string2 と等しい
アルファベットで比較
Sub StrComp4()
MsgBox "abとabを比較 戻り値" & StrComp("ab", "ab")
End Sub
数値で比較
Sub StrComp5()
MsgBox "1と1を比較 戻り値" & StrComp(1, 1)
End Sub
ひらがなで比較
Sub StrComp6()
MsgBox "あとあを比較 戻り値" & StrComp("あ", "あ")
End Sub
それぞれstring1 = string2 のため戻り値が0です。
string1 が string2 より大きい
アルファベットで比較
Sub StrComp7()
MsgBox "bとacを比較 戻り値" & StrComp("b", "ac")
End Sub
数値で比較
Sub StrComp8()
MsgBox "10と1を比較 戻り値" & StrComp(10, 1)
End Sub
ひらがなで比較
Sub StrComp9()
MsgBox "いとあうを比較 戻り値" & StrComp("い", "あう")
End Sub
それぞれstring1 > string2 のため戻り値が1です。
string1 または string2 が Null である
Sub StrComp10()
MsgBox "あとNullを比較 戻り値" & StrComp("あ", Null)
End Sub
string2がNullのため戻り値がNullです。
比較方法を指定して実行する
比較方法ですが、大文字小文字全角半角を比較するしないの設定が出来ます。
全角と半角で比較する(vbBinaryCompare)
Sub StrComp11()
MsgBox "bとbを比較 戻り値" & StrComp("b", "b", vbBinaryCompare)
End Sub
全角と半角で比較しない(vbTextCompare)
Sub StrComp12()
MsgBox "bとbを比較 戻り値" & StrComp("b", "b", vbTextCompare)
End Sub
全角と半角を比較していますが戻り値が0です。
大文字と小文字で比較する
Sub StrComp13()
MsgBox "Bとbを比較 戻り値" & StrComp("B", "b")
End Sub
大文字と小文字で比較しない(vbTextCompare)
Sub StrComp14()
MsgBox "Bとbを比較 戻り値" & StrComp("B", "b", vbTextCompare)
End Sub
大文字と小文字で比較していますが戻り値が0です。
表から文字列を取得して比較する
C列とD列の文字列を比較してE列に戻り値を設定します。
Sub StrComp15()
Dim str1, str2 As String
Dim i As Integer
i = 2
Do While Cells(i, 3) <> ""
'セルから文字列を取得
str1 = Cells(i, 3)
str2 = Cells(i, 4)
'セルにStrCompの戻り値を設定
Cells(i, 5) = StrComp(str1, str2)
i = i + 1
Loop
End Sub
Sub Trim6()
Dim moji As String
'セルから文字列を取得
moji = Cells(2, 2)
'セルにTrimで変換した値を設定
Cells(2, 3) = Trim(moji)
Cells(2, 4) = LTrim(moji)
Cells(2, 5) = RTrim(moji)
End Sub
変換した値を各セルに設定しました。
繰り返し処理(Trim/LTrim/RTrim関数)
B列に文字列を設定します。
Sub Trim7()
Dim moji As String
Dim i As Integer
i = 2
Do While Cells(i, 2) <> ""
'セルから文字列を取得
moji = Cells(i, 2)
'セルにTrimで変換した値を設定
Cells(i, 3) = Trim(moji) & ","
Cells(i, 4) = LTrim(moji) & ","
Cells(i, 5) = RTrim(moji) & ","
i = i + 1
Loop
End Sub
Sub Len6()
Dim moji As String
Dim ichi, mojisu As Integer
Dim i As Integer
i = 0
Do While Cells(i + 2, 2) <> ""
'セルから文字列を取得
moji = Cells(i + 2, 2)
'文字列の末尾から\の位置を取得
ichi = InStrRev(moji, "\")
'文字列の文字数を取得
mojisu = Len(moji)
'ファイル名を取得
Cells(i + 2, 3) = Mid(moji, ichi + 1, mojisu)
i = i + 1
Loop
End Sub
Sub LCaseUCase1()
MsgBox LCase("AbCdE") & vbLf & UCase("AbCdE")
End Sub
L/UCase関数内で”AbCdE”を設定します。
vbLfは改行です。
LCaseですべて小文字に変換されました。
UCaseですべて大文字に変換されました。
空白を設定
Sub LCaseUCase2()
MsgBox LCase("") & vbLf & UCase("")
End Sub
L/UCase関数内は空白です。
何も表示されません。
アルファベットと記号の設定
Sub LCaseUCase3()
MsgBox LCase("A|B?c&d") & vbLf & UCase("A|B?c&d")
End Sub
L/UCase関数内で”A|B?c&d”を設定します。
LCaseで記号以外は小文字に変換されました。
UCaseで記号以外は大文字に変換されました。
セルから文字列を取得して隣のセルに設定
セルのB2に”AbCdE”が入力されています。
B2の値をLCaseとUCaseを使用した結果をセルに表示します。
Sub LCaseUCase4()
Dim moji As String
'セルから文字列を取得
moji = Cells(2, 2)
Cells(2, 3) = LCase(moji)
Cells(2, 4) = UCase(moji)
End Sub
小文字と大文字に変換されました。
繰り返し処理(Do While文)
B列に複数の文字列が入力されています。
B列の値をLCaseとUCaseを使用した結果をセルに表示します。
Sub LCaseUCase5()
Dim moji As String
Dim i As Integer
i = 0
'B列が空白でない間繰り返し処理
Do While Cells(2 + i, 2) <> ""
moji = Cells(2 + i, 2)
Cells(2 + i, 3) = LCase(moji)
Cells(2 + i, 4) = UCase(moji)
i = i + 1
Loop
End Sub
Sub CStr6()
MsgBox "今は" + CStr(Now()) + "です"
End Sub
Now()をCStrに設定しています。
エラーが発生することなく表示されました。
大体の方はCStrで書かず&でコードを書くと思います。
Sub CStr7()
MsgBox "今は" & Now() & "です"
End Sub
セルから値を取得してString型の配列に格納
上記の内容は文字列、日付、数値のデータがあります。
こちらを文字列に変換して配列に格納していきます。
Sub CStr8()
Dim neko(3) As String
Dim i As Integer
i = 0
Do While Cells(2, i + 2) <> ""
neko(i) = CStr(Cells(2, i + 2))
i = i + 1
Loop
Cells(2, i + 2) = Join(neko)
End Sub
Sub Split2()
MsgBox Join(Split("aaa bbb ccc"), vbLf)
End Sub
この様な記載も可能です。
Split関数内に文字列が無い場合
Sub Split3()
Dim str() As String
str = Split("")
MsgBox Join(str, vbLf)
End Sub
Split関数内に文字列がないので何も表示されません。
Split関数内に区切りたい文字列を設定
Sub Split4()
Dim str() As String
str = Split("aaa bbb_ccc", "_")
MsgBox Join(str, vbLf)
End Sub
Split関数内で区切り文字を”_”で設定します。
Split関数内の文字列にbとcの間に”_”があるので、分割して配列に格納されました。
区切り文字が”_”のため” “は判断されません。
Split関数内に返す要素数を設定
Sub Split5()
Dim str() As String
str = Split("aaa_bbb_ccc", "_", 2)
MsgBox Join(str, vbLf)
End Sub
Split関数内で”_”が文字列の中に2つあります。
返す要素数を2に設定しています。
配列の要素数を2で設定したので、1つ目の”_”で区切られ配列に格納されました。
ちなみに返す要素数を-1にするとすべて返します。
区切り文字を省略した場合は” “で判定されます。
Sub Split6()
Dim str() As String
str = Split("aaa bbb ccc", , 2)
MsgBox Join(str, vbLf)
End Sub
Split関数内に区切り文字の比較方法を設定
比較方法ですが、大文字小文字を比較するしないの設定が出来ます。
0 or vbBinaryCompare で大文字小文字を比較します。
Sub Split7()
Dim str() As String
str = Split("aaaebbbEccc", "E", , 0)
MsgBox Join(str, vbLf)
End Sub
Sub Split8()
Dim str() As String
str = Split("aaaebbbEccc", "E", , vbBinaryCompare)
MsgBox Join(str, vbLf)
End Sub
aとbの間にe、bとcの間にEがあります。
区切り文字は”E”です。
“E”で判定された部分で分割されて、配列に格納されています。
1 or vbTextCompare で大文字小文字を比較しません。
Sub Split9()
Dim str() As String
str = Split("aaaebbbEccc", "E", , 1)
MsgBox Join(str, vbLf)
End Sub
Sub Split10()
Dim str() As String
str = Split("aaaebbbEccc", "E", , vbTextCompare)
MsgBox Join(str, vbLf)
End Sub
aとbの間にe、bとcの間にEがあります。
区切り文字は”E”です。
“e”と”E”で判定された部分で分割されて、配列に格納されています。
セルから文字列を取得してセルに設定
B2の文字列とC2の区切り文字を取得して配列の内容をD2に表示させます。
Sub Split11()
Dim str() As String
Dim kugiri, moji As String
'セルから文字列を取得
moji = Cells(2, 2)
'セルから区切り文字を取得
kugiri = Cells(2, 3)
'Splitで配列に格納
str = Split(moji, kugiri)
'配列の内容をセルに表示
Cells(2, 4) = Join(str, vbLf)
End Sub
配列の内容がD2に表示されました。
繰り返し処理(文字列、区切り文字)
B列の文字列とC列の区切り文字を取得して配列の内容をD列に表示させます。
C5には” “を入力していて、C6には空白です。
Sub Split12()
Dim str() As String
Dim kugiri, moji As String
Dim i As Integer
i = 2
Do While Cells(i, 2) <> ""
'セルから文字列を取得
moji = Cells(i, 2)
'セルから区切り文字を取得
kugiri = Cells(i, 3)
'Splitで配列に格納
str = Split(moji, kugiri)
'配列の内容をセルに表示
Cells(i, 4) = Join(str, vbLf)
i = i + 1
Loop
End Sub