VBA関数について

VBAで使う関数って何?よくわかんない!



関数は実務でもたくさん使うんだ!一つずつ覚えていこうね!
関数は決まった計算や処理を行う命令になります。実務を行う上でも関数はよく使います。
マクロ記録機能では関数は記録されないため、一つずつ覚えていきましょう。
今日も文字列を操作する関数の動きを勉強しましょう。



今日使う実例はこちらになります。
Sub MOJIRETSU3()
Dim Moji As String
Dim A As Long
Moji = "ABCDEFGHIJ"
A = InStr(Moji, "B")
MsgBox A
A = InStr(Moji, "D")
MsgBox A
A = InStr(Moji, "GHI")
MsgBox A
A = InStr(Moji, "Z")
MsgBox A
If InStr(Moji, "I") > 0 Then
MsgBox "変数MojiにAは含まれています"
Else
MsgBox "変数MojiにAは含まれません"
End If
Moji = "ABC"
If InStr(Moji, "I") > 0 Then
MsgBox "変数MojiにAは含まれています"
Else
MsgBox "変数MojiにAは含まれません"
End If
End Sub
InStr関数
InStr関数は、引数に指定した文字列の中で引数「検索文字列」が存在する位置を数値で返します。
また「検索文字列」が存在しないと、InStr関数は「0」を返しますので、文字列の中にある文字が含まれているかどうかを調べるときにも使います。
InStr関数の書式は下記になります。
InStr(文字列, 検索文字列)
実例を動作させてInStrの動きをみていきましょう。
8行目でInStr関数を使い、変数Mojiの文字列”ABCDEFGHIJ”から「検索文字列」”B”が存在する位置を数値で返しています。
A = InStr(Moji, "B")


下記図と一緒にみていきましょう。
「検索文字列」”B”は文字列”ABCDEFGHIJ”の2番目なので2という数値を返しています。


同様に12行目も同じ考え方です。
A = InStr(Moji, "D")
実例を動作させると数値4が返っていますね。




16行目のように2桁以上の文字列を指定した場合は、先頭位置が返ります。
A = InStr(Moji, "GHI")




20行目の例のように、「検索文字列」が存在しない場合は0を返します。
A = InStr(Moji, "Z")


このように、InStr関数は文字列の検索を目的とし活用することができます。具体的な例をみていきましょう。
If InStr(Moji, "I") > 0 Then
MsgBox "変数MojiにAは含まれています"
Else
MsgBox "変数MojiにAは含まれません"
End If
文字列”ABCDEFGHIJ”でIの位置は9となるため、上記If文はTrueとなり下記MsgBoxが表示されます。


次に変数Mojiの文字列を”ABC”に変更してから同様のIf文を判定してみましょう。
Moji = "ABC"
If InStr(Moji, "I") > 0 Then
MsgBox "変数MojiにAは含まれています"
Else
MsgBox "変数MojiにAは含まれません"
End If
文字列”ABC”にIは存在しないため、0が返ります。上記If文はFalseとなり下記MsgBoxが表示されます。


まとめ
今日は文字列操作関数の基本となるInStr関数の用法を勉強しました。
次回も他の文字列操作関数を学んでいきましょう。
コメント