InStr関数をループさせて、複数回の禁止ワードを探す
Const strMOJI = "注目 激安通販 激安商品 激安価格"
から、
激安の文字がいくつあるか?
InStr関数を使って、カウントしてみたいと思います。
Instr(検索開始位置, 検索元文字列, 探す文字列)
で、チェックできるので、
n = InStr(n, strMOJI, "激安")
みたいに、位置が返るので使ってみます。
いつもの脳内垂れ流し解説のテスト動画です。
【VBA】単体テスト InStr(検索開始位置, 検索元文字列, 探す文字列) 【三流君】 - YouTube
www.youtube.com
デバック時↑、
テストコードと合わせて、使ってみてください。
ループの作り方など、
イロイロとあるので、
面白い じゃなかった、
シンプルでわかりやすいコードを作成してくださいね。
少しでも文字列処理の参考となればうれしいです。
キーワード:
VBA,InStr関数,文字列操作,単体テスト,
デバッグ,F8,ステップ実行
テストで使用したコードです。
Option Explicit Sub test_instr20160812() Const strMOJI = "注目 激安通販 激安商品 激安価格" Dim n As Integer '位置 Debug.Print strMOJI n = 1 'スタートを1文字目から Debug.Print "n = " & n & "文字目から探すと" n = InStr(n, strMOJI, "激安") Debug.Print "返ってきた激安の位置は " & n n = n + 1 'その次の文字から探したいので+1 Debug.Print "n = " & n & "文字目から探すと" n = InStr(n, strMOJI, "激安") Debug.Print "返ってきた激安の位置は " & n n = n + 1 'その次の文字から探したいので+1 Debug.Print "n = " & n & "文字目から探すと" n = InStr(n, strMOJI, "激安") Debug.Print "返ってきた激安の位置は " & n n = n + 1 'その次の文字から探したいので+1 Debug.Print "n = " & n & "文字目から探すと" n = InStr(n, strMOJI, "激安") Debug.Print "返ってきた激安の位置は " & n End Sub 'Whileループで回し 単語の数をカウントするテスト Sub test_instr20160812_002() Const strMOJI = "注目 激安通販 激安商品 激安価格" Dim n As Integer '位置 Dim i As Integer '見つけた個数 Debug.Print strMOJI '初期処理 i = 0 '見つけた個数を0で初期化 n = InStr(1, strMOJI, "激安") '1文字目から探す While n > 0 '単語・文字が見つかっている間回る i = i + 1 '見つけた個数をカウントアップ Debug.Print i & "," & n & "文字目に単語有" '次の位置+1 から 文字を探す n = InStr(n + 1, strMOJI, "激安") '↑見つからないと0が返るので、ループを抜けるよ Wend Debug.Print i & "個の単語を見つけました" End Sub 'Forループで回し 単語の数をカウントするテスト Sub test_instr20160812_003_For() Const strMOJI = "注目 激安通販 激安商品 激安価格" Dim n As Integer '位置 Dim i As Integer '見つけた個数 Debug.Print strMOJI '初期処理 n = 0 'スタート位置を0で初期化 'ループで探す For i = 0 To 9999 '最大9999回わす '次の位置 n+1 から 文字を探す n = InStr(n + 1, strMOJI, "激安") '↑見つからないと0が返るので↓でループを抜けるよ If n = 0 Then Exit For '見つからないときは Exit forで抜ける '中間結果の表示 Debug.Print i & "," & n & "文字目に単語有" Next 'ループカウンタのiが見つけた個数です。 Debug.Print i & "個の単語を見つけました" End Sub
ループの作り方など、
イロイロとあるので、
面白い じゃなかった、
シンプルでわかりやすいコードを作成してくださいね。
少しでも文字列処理の参考となればうれしいです。
いつもの脳内垂れ流し解説のテスト動画です。
※上の動画と同じです。
www.youtube.com
【VBA】単体テスト InStr(検索開始位置, 検索元文字列, 探す文字列) 【三流君】 - YouTube