⇒ こちらの記事をご覧ください。
⇒ こちらの記事もご覧ください(コードの解説)。
今回も、前々回に呈示したマクロコードについて、少しだけ解説します。
ひらがな判定には、
文字コード表上の「ぁ」から「ん」までの範囲にある文字がひらがなであること
を利用します。そして、範囲内の文字か、範囲外の文字かの判定は、文字列比較演算子「Like」を使えば、可能となります。
変数Result = Range("A1").Value Like "[ぁ-ん]"
というコードを記述すればOKです。
A1セルの値(1文字である必要あり)が、
[ぁ-ん]の範囲内にあれば、変数Resultには「真True」が入り、
[ぁ-ん]の範囲外であれば、変数Resultには「偽False」が入る
というわけです。[ぁ-ん]の範囲外であれば、変数Resultには「偽False」が入る
上記A1セルの値が1文字ではない場合に、その数文字を1文字ずつ調べるには、どうするか?
こういう場合、「Mid関数」を使います。
Mid関数は、指定された位置から、指定された文字数分の文字列を返す関数です。
構文は、
Mid(元の文字列,開始位置,文字数)
となります。
1 「元の文字列」には、取り出し元となる文字列を入れます。
2 「開始位置」は、文字列の先頭位置を1として、文字列を取り出す開始位置を整数で指定します。
3 「文字数」には、取り出す文字列の文字数を指定します。
MsgBox Mid("丸出駄目世",3,1)
とすると、メッセージボックスには、「駄」が出力されます。
元の文字列「丸出駄目世」の3文字目から1文字を抜き出した結果が、「駄」というわけです。
変数Result = Mid(Range("A1").Value,i,1) Like "[ぁ-ん]"
のコードを用意しておき、整数Integer型の変数「i」に、1、2、3・・・と、最大数(文字数)の数まで、順に整数を代入していけば、1文字ずつを順に調べることができます。
最終的に記述するコードは、次のとおりとなります。
Dim i As Integer
For i = Len(Range("A1").Value) To 1 Step -1
If Not Mid(Range("A1").Value, i, 1) Like "[ぁ-ん]" Then
MsgBox "「ひらがな」以外は受け付けません。" _
& Chr(13) & "スペースが入っても受け付けません。", _
vbExclamation, "データ入力注意"
Exit Sub
End If
Next i
このマクロが、A1セルに入力されたデータがひらがなかどうかの判定をしてくれます。ひらがな以外の文字(漢字、数字、記号、スペース)が混じっていると、たちどころに弾き返してくれます。
マクロって、本当に便利ですねぇ。
それでは、また次の記事で。
■■■■ goosyun ■■■■