【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください

Excel VBAでA列はカタカナ文字のみ入力したいです。

ボタンを押下する事により、A列でカタカナ以外の文字が入っていたらセルの色を変えたいと思っています。

「アイウエオ」OK
「アイウぇオ」NG
「亜イウエオ」NG
「アイウ_エオ」NG

各セルに入っている文字列を一文字ずつ切り出して判定すればできるような気がしますが、物凄い時間がかかりそうです。これを簡単な方法で実現できないでしょうか?

A 回答 (2件)

こんにちは。



>文字列を一文字ずつ切り出して判定すればできるような気がしますが、物凄い時間がかかりそうです。

実際には、その方法でも、考えるほどにはないと思います。

今回は、あえて、正規表現は使わない方式で、#1様とは、ちょっとだけ違う方法で考えてみました。なお、以下のコードは、濁点や半濁点は、全角変換した場合は、StrConvで組み込まれ1字になるのですが、ハンパが出てきた時は、基本的には文字としては、存在しえませんから、"NG"になります。また、半角の長音=マイナス(-)が、第一字目には出てこないことを前提にしています。


'//
Sub CheckKatakana()
Dim c As Variant
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
 If c.Value <> "" Then
  If StrConv(c.Value, vbWide) Like "*[!ァ-ヶー][!-]*" Then
    c.Interior.ColorIndex = 7 'ピンク
  Else
    c.Interior.ColorIndex = xlColorIndexNone '訂正後にやれば、色は消えます。
  End If
 End If
Next c
End Sub
'//
    • good
    • 0
この回答へのお礼

こんにちは。お礼遅くなりまして申し訳ございません。大変良質なコードでお教え頂きありがとうございます。感謝です!

お礼日時:2014/04/09 00:52

簡単に



' ' ///

Sub Re8530268()
  Dim r As Range
  For Each r In Range("A1:A4")  '  ◆◆セル範囲を必要に合わせて指定。
    If r.Value Like "*[!ヲ-゜ーァ-ヶ]*" Then  '  ※パターン文字列の半角カナに注意!!
      r.Interior.Color = vbRed  '  ◆◆塗り潰し色を指定
    End If
  Next
End Sub

' ' ///

このサイトでは半角カナの投稿は反映されず一部の文字は文字化けしてしまいます。
Like 演算子に用いるパターン文字列ですが、そちらで正しい文字に書き換えてください。
  *[!ヲ-゜ーァ-ヶ]*
4桁め、半角カナのヲ
6桁め、半角半濁点(半角でパを入力した時の2文字目)

(7桁め ー、8桁め ァ、10桁め ヶ、以上の3文字は全角で、他は皆半角です。)

以上です。
    • good
    • 1
この回答へのお礼

こんにちは。お礼遅くなりまして申し訳ございません。大変良質なコードでお教え頂きありがとうございます。感謝です!

お礼日時:2014/04/09 00:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報