このあたりまでは一気に書き溜めていた
講座のつづき。
おつかれさまです。なずなです。
今回は文字列関係の1回目。
どっちかっていうと文字列の条件分岐ですね。
覚えるのみ。そしてしょっちゅうつかいます!
6.文字列を扱う
引き続き基礎勉強になります。
文字列の扱い方は非常に重要です。
極端なことを言えばデータとは文字を決まったルールに
したがって並べただけのものです。
この扱い方、どう扱っていくかを覚えるだけで
できることの幅がとても広がります。
文字の条件分岐
[まとめ]
・VBAの比較は 文字 = 文字 イコールです。
・LIKE演算子があります。*(ワイルドカード)使えます。
・正規表現は参照設定すれば可。ここでは扱いません。
まずはA1セルからA10セル程度まで適当に文字をうめてください。
aaa
ereare
braer
eree
eee
aerea
arae
aerer
みたいなのでオッケーです。
最初に1列をdebug.printする処理を作ります。
```VB
Sub sample1()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
Dim i As Long
i = 1
Do While sh.Cells(i, 1).Value <> ""
Debug.Print sh.Cells(i, 1).Value
i = i + 1
Loop
End Sub
``` VB
### 通常の条件分岐
数字と一緒です。 = と <> です。
```VB
Sub sample2()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
Dim i As Long
i = 1
Do While sh.Cells(i, 1).Value <> ""
If sh.Cells(i, 1).Value = "aaa" Then
Debug.Print sh.Cells(i, 1).Value, "一致", i
Else
Debug.Print sh.Cells(i, 1).Value, "不一致", i
End If
i = i + 1
Loop
End Sub
```
### ○○が含まれる。
2種類扱います。Like と inStrです。
補足としてLikeはVBSでは使えないことを軽く覚えておいてください。
#### Like
Q. 文字「ra」が含まれる行数をdebug.printしてください。
```VB
Sub sample3()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
Dim i As Long
i = 1
Do While sh.Cells(i, 1).Value <> ""
If sh.Cells(i, 1) Like "*" & "ra" & "*" = True Then
Debug.Print i
End If
i = i + 1
Loop
End Sub
```
Like のところの書き方をおぼえるだけです。
*はワイルドカードというやつ。なんでもオッケーの意味です。
= True は省略可能です。
あ! True or False の話してないかも。。。
正しいか、正しくないかの2択です。なんとなく雰囲気でOKです。
[補足]
もう少し柔軟な使い方ができる演算子です。
ぐぐって確認してみてください。
ただし、あまりこれで複雑なことはしないのを推奨です。
### inStr
```VB
Sub sample4()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
Dim i As Long
i = 1
Do While sh.Cells(i, 1).Value <> ""
If InStr(sh.Cells(i, 1).Value, "ra") > 0 Then
Debug.Print i & "行目", InStr(sh.Cells(i, 1).Value, "ra") & "文字目"
End If
i = i + 1
Loop
End Sub
```
書き方が妙にややこしくなりました。
まず判定が0より大きければになっています。
これはInStrがある文字列に、文字が含まれている開始文字数を返してくるためです。
なければ0が帰ってきます。
覚えておくとたまーーーに便利です。
今回はここまで!
いろいろ文字を変えたりして、希望の表示になるか 確認してみてください。