• ベストアンサー

Excel 条件付き書式:条件を半角文字にしたい

条件付き書式でセルに色を付けたいのですが、 条件は、「半角文字を使用している事」です。 対象となる半角文字は、”英数カナ記号”です。 どのようにすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。補足に対する回答です それはVBAでLenBを求めるときUnicodeでカウントするからです。 Unicodeでは半角文字が1バイトで表現されるわけではありませんので以下のような「システム既定の文字コードに変換する」処理を追加しないとなりません。 Sub Macro() For Each rngCell In Selection X = LenB(StrConv(StrConv(rngCell.Value, vbWide), vbFromUnicode)) Y = LenB(StrConv(rngCell.Value, vbFromUnicode)) If X - Y > 0 Then rngCell.Interior.ColorIndex = 3 End If Next rngCell End Sub ワークシート関数だと(今のところ)このような考慮は必要がありません

PearlJam69
質問者

お礼

早速のご回答ありがとうございました。 目的の結果が得られました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

条件付き書式の「数式」を =(LENB(JIS(A1))-LENB(A1))>0 にしたらどうでしょうか。 JIS関数は半角文字を全角文字に変更する関数です。 この数式では「半角文字を使用しているセル」が色付きの対象になります。この条件ではNGでもっと細かな条件が必要なら補足してください。(ユーザ定義関数かマクロが必要になります)

PearlJam69
質問者

お礼

ありがとうございます。 ご回答いただいたものを基に 目的の操作を下記のように記述してみたのですが、 うまくいきません。 どこが間違っているでしょうか? ************************************************* For Each rngCell In Selection X = LenB(StrConv(rngCell.Value, vbWide)) Y = LenB(rngCell.Value) If X - Y > 0 Then rngCell.Interior.ColorIndex = 3 End If Next rngCell *************************************************

関連するQ&A