見出し画像

パソコン悪戦苦闘記録

文字列から1文字ずつ取り出すMid関数 ExcelマクロVBA

 Excelのセルに入力されたデータが、ひらがなのかどうかの判定をするマクロの記事を書きました。

 ⇒ こちらの記事をご覧ください。

 ⇒ こちらの記事もご覧ください(コードの解説)。





 今回も、前々回に呈示したマクロコードについて、少しだけ解説します。

 ひらがな判定には、
文字コード表上の「ぁ」から「ん」までの範囲にある文字がひらがなであること
を利用します。
 そして、範囲内の文字か、範囲外の文字かの判定は、文字列比較演算子「Like」を使えば、可能となります。

   変数Result = Range("A1").Value Like "[ぁ-ん]" 
というコードを記述すればOKです。

 A1セルの値(1文字である必要あり)が、
[ぁ-ん]の範囲内にあれば、変数Resultには「真True」が入り、
[ぁ-ん]の範囲外であれば、変数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
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事