Excel。VBA。きちんと大文字の半角で入力されているかチェックしたい
<Excel VBA:UCase関数・StrConv関数>
入力されているデータが、すべて大文字で、しかも半角で入力されているのかを手早くチェックしたいので、Excel VBAでプログラム文をつくってみることにしました。
A2:A6にサンプルのデータを入力してあります。
正解は、A4だけが、大文字の半角で入力された「A123」です。
B4に○が表示されるようにしたプログラムです。
Sub 半角チェック()
Dim i As Long
Dim lastrow As Long
Dim ck As String
Dim mt As String
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
ck = UCase(StrConv(Cells(i, "a"), vbNarrow))
mt = Cells(i, "a")
If mt = ck Then
Cells(i, "b") = "○"
End If
Next
End Sub
では、実行してみましょう。
B4だけに〇が表示されています。
では、プログラム文を確認しておきましょう。
最初は、変数宣言。
Dim i As Long For文の繰り返しでつかいます。
Dim lastrow As Long データの最大行番号を取得してFor文の繰り返しでつかいます
Dim ck As String 大文字の半角にしたデータを格納します。
Dim mt As String A列のデータを格納します。
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
A列の一番下のデータの行番号を取得します。
For i = 2 To lastrow
ck = UCase(StrConv(Cells(i, "a"), vbNarrow))
mt = Cells(i, "a")
If mt = ck Then
Cells(i, "b") = "○"
End If
Next
For文は繰り返しです。
ckには、UCase関数をつかって大文字に変換します。
StrConv関数の2番目の引数のvbNarrowで半角に変換します。
要するに、UCase+StrConvのvbNarrowで「大文字の半角」に変換することができます。
このあたいをckに代入します。
元のA列のデータをmtに代入させます。
If文をつかって、
mtとckが同じ、つまり大文字の半角ということで合致したら、○を表示させる
ということを処理しています。