• ベストアンサー

ExcelのVBAでカタカナをチェックしたい

noname#4564の回答

  • ベストアンサー
noname#4564
noname#4564
回答No.3

  > 具体的なコーディング例を教えていただけませんでしょうか? 参考までに・・・。↓ Option Explicit Option Compare Binary Public Const MaxRow = 65536 Public Const AscKuten As Integer = &HA1 '半角句点のAscii文字コード Public Const AscDakuOn As Integer = &HDE '半角濁音   〃 Public Const AscHanDakuOn As Integer = &HDF '半角半濁音  〃 Public Sub Test(ByRef wkSht As excel.Worksheet, _ ByVal colNumber As Long, _ Optional ByVal startRow As Long = 2, _ Optional ByVal endRow As Long = MaxRow) Dim i As Long With wkSht For i = startRow To endRow .Cells(i, colNumber).Value = KanaWideConv(.Cells(i, colNumber).Value) Next i End With End Sub Public Function KanaWideConv(ByVal strSource As String) As String Dim strTmp As String Dim lngStrLength As Long Dim i As Long If Len(strSource) = 0 Then KanaWideConv = "" Exit Function End If lngStrLength = Len(strSource) '先頭の1文字のみ、別処理。 For i = lngStrLength To 2 Step -1 strTmp = Mid$(strSource, i, 1) Select Case Asc(strTmp) '濁音、半濁音の処理。(直前の文字と2文字1組で処理) Case AscDakuOn, AscHanDakuOn strSource = Replace(strSource, Mid$(strSource, i - 1, 2), _ StrConv(Mid$(strSource, i - 1, 2), vbWide)) 'その他の半角カタカナ。 Case AscKuten To &HDD Mid$(strSource, i, 1) = StrConv(strTmp, vbWide) End Select Next i strTmp = Left$(strSource, 1) Select Case Asc(strTmp) Case AscKuten To AscHanDakuOn Mid$(strSource, 1, 1) = StrConv(strTmp, vbWide) End Select KanaWideConv = strSource End Function Public Function IsHankakuKana(ByRef strSource) As Boolean Dim i As Long IsHankakuKana = True For i = 1 To Len(strSource) Select Case Asc(Mid$(strSource)) Case AscKuten To AscHanDakuOn Exit Function End Select Next i IsHankakuKana = False End Function  

uckey7
質問者

お礼

貴重なソースを拝見させていただきありがとうございました。 私のレベルでは、ちょっとツラかったので・・・ 結局、全角に変換して、変換前と変換後の文字列のバイト数を比較してメッセージを表示するというコーディングで逃げてしまいました(笑) しばらくソースと格闘していましたので、直ぐにお礼が書けず失礼いたしました。 無事納品できました。ありがとうございました。

関連するQ&A

  • Excel。英数字カタカナ混ぜこぜのセルで、カタカナのみ全角にする方法は?

    とっても基本的なことで困ってます。 Excelの1つのセルの中に、英数字カタカナがごちゃ混ぜのデータが入っています。英数字は全角の場合もあれば半角の場合もありです。片仮名もしかり。 そのデータを、英数字のみ半角にし、カタカナは全角に修正したいんです。 間違ってASC関数を使ったら、カタカナまで半角になっちゃった・・・・。 本日午後一のミーティングにそろえなきゃいけない資料なんです! 誰かーーー! 助けてーーーー!!

  • Excel:全角カタカナを入力時に自動的に半角カタカナにしたい

    恐れ入ります。 Excel2007にて全角カタカナをASC関数などで半角カタカナに修正をしているのですが、列がふたつできてしまうため少し面倒です。 (元の全角の列、半角になおした列) 入力時に設定をしてしまうことは可能でしょうか。 入力の際に、カタカナが自動的に半角になるようにできれば とてもたすかります。 ご存じの方、どうぞよろしくお願い致します。

  • ExcelのVBAで・・・

    VBA初心者です。。 Excelのある列のセルの値が全角文字の場合に、 隣の列に全角カタカナに変換した値を転送するVBAがあります。 変換元の列の中に空白セルがあった時は変換先のセルに 文字があっても空白に置き換えたいのですが、方法がわかりません・・・。 使用しているVBAの内容は下の通りですが、どういう風に 修正すれば実現できるかアドバイスを頂けないでしょうか? よろしくお願い致します!   Dim C As Range   For Each C In Range("E3", Range("E65536").End(xlUp))     If C.Value <> "" Then _     C.Offset(, 1).Value = Application.GetPhonetic(C.Value)   Next

  • エクセル VBA 入力内容チェック

    エクセルVBAの初心者(昨日から勉強)です。 以下のVBAを作りたいです。 C1からH12までの範囲に半角“-”が入力されています。 しかし、入力ミスで全角“-”が入力される場合が多発していますので、 C1からH12までの範囲内で、全角“-”が入力されたら、エラーを出すチェックツールを作りたいです。 何か知恵をお借りいただけますでしょうか? 宜しくお願いいたします。

  • 全角カタカナを半角カタカナへ

    エクセルを使っています。 セルの中の全角カタカナの部分だけを半角カタカナへ 変えるにはどのようにしたらよいでしょうか。 例えば ”アイウエオ 青空 ” → ”アイウエオ 青空 " 複数のセルを上記のようにしたいので宜しくお願いします。

  • Excel カタカナと英数字の混在セルでカタカナのみ全角にする

    同じセルの中に、半角カタカナと英数字が混在しています。 カタカナのみ全角にし、英数字は半角の設定のままにする関数を教えてください。 アイウエABCショウジ(半角カタカナ+半角英数字) ⇒ アイウエABCショウジ(全角カタカナ+半角英数字)

  • Excelでカタカナや英数字の変換

    1つのセルの中に【漢字】と【全角カタカナ】と【全角英数字】が入力してあります。この【全角カタカナ】と【全角英数字】を、「範囲選択後F10キー」等ではなく簡単に手際よく半角に変換する方法はありますか?

  • EXCELで

    EXCELでシート1のセルAにあるカタカナの全角の文字をシート2のセルAにカタカナ半角で表示したいのですがどうすればいいのでしょうか?

  • エクセルで入力文字のチェック

    エクセルのセルに入力された値がUnicodeで****から****までの範囲内のみの文字で記述されているかのチェックをしたいのですが、 例:B3には電話番号を入力したいので半角数字と()のみで構成されているかをチェックする。 VBAでどのように記述すればよいのでしょうか? もう一つ、 セルB3に文字を入力し終えた時または、B3にあるカーソルを他のセルに動かした時に VBAが走る…と言う記述方法はあるのでしょうか? ボタンを用意し、入力後[CHECK]を押すとVBAが動くと言うのは出来るのですが… 以上よろしくお願いいたします。

  • エクセルで英数字を半角にするマクロ

    すでにデータが入力されたエクセルで、全角の英数字を半角にするマクロを探しています。 条件があり、なかなか合う物がなく、質問させて頂きました。 条件は ・アルファベット→半角 ・数字→半角 ・カタカナ→全角 ・伸ばし棒(例えば「データ」の「ー」)→全角 ・同一セルに上書きで変換 下の2点はできたら半角になると嬉しいです。 ・ナカグロ→半角 ・<>→半角 よろしくお願い致します。