2011-07-15 19:49:38

半角カナのみ全角カナに変換する

テーマ:■エクセルVBA Tips集

半角カナのみ全角カナに変換します。


ネットを探してみたところ、あるにはあるのですが、どうも中途半端。


直ぐに使えて、汎用性のあるプログラムが見つからなかったので、作ってみました。



ではプログラムです。


Sub sample()
  Dim objRange As Range
  For Each objRange In ActiveSheet.UsedRange
    Call 半角カナto全角カナ(objRange)
  Next
End Sub

Private Sub 半角カナto全角カナ(ByRef objRange As Range)
  Dim strIn As String  '元の文字列
  Dim strOut As String '変換後の文字列
  Dim strKana As String '変換対象のカナ

  Dim i As Integer
  
  '数式、文字列以外は対象外
  If objRange.HasFormula Or _
    VarType(objRange.Value) <> vbString Then
    Exit Sub
  End If
  
  strIn = objRange.Value
  strOut = ""
  strKana = ""
  For i = 1 To Len(strIn)
    '161(。)~223(゚)を半角カナと判定
    'カナ記号(。「」、・)を除く場合は、166(ヲ)~とする
    If Asc(Mid(strIn, i, 1)) >= 161 And _
      Asc(Mid(strIn, i, 1)) <= 223 Then
      strKana = strKana & Mid(strIn, i, 1) 'カナを変数に追加
    Else '半角カナ以外
      If strKana <> "" Then
        strOut = strOut & StrConv(strKana, vbWide) '全角変換
        strKana = ""
      End If
      strOut = strOut & Mid(strIn, i, 1)
    End If
  Next
  If strKana <> "" Then
    strOut = strOut & StrConv(strKana, vbWide) '全角変換
  End If
  objRange.Value = strOut 'セルのValueへ戻す
End Sub


Sub sample()ビックリマーク
は、起動するマクロになります。

この部分で、セル範囲を変更することで、いろいろと対応出来るはずです。


Private Sub 半角カナto全角カナ(ByRef objRange As Range)ビックリマーク
実際に、全角変換しているモジュールです。

引数をRangeオブジェクトにしています。

Value値だけでは、その後の判定ができません。


objRange.HasFormulaビックリマーク

数式の設定されているセルの判定です。


VarType(objRange.Value) <> vbStringビックリマーク

値が、文字列かどうかの判定です。


Asc(Mid(strIn, i, 1)) >= 161 And Asc(Mid(strIn, i, 1)) <= 223 ビックリマーク

半角カナ文字の判定です、カナ記号も含めています。

プログラム中のコメントにもありますが、

カナ記号(。「」、・)を除く場合は、166(ヲ)~として下さい。


StrConv(strKana, vbWide)ビックリマーク

全角変換です。

この、vbWideを変更することで、ひらがなに変換したりすることができます。



これなら文句ないでしょう。


きっちり、半角カナのみ変換しています。


数式の判定と、連続しているカナ文字をまとめて変換していますので。



ネットで探してみたところ、みかけたものには、数式の判定をしていない為に、


実行したら、計算式が全部なくなってしまったりするものがあります。


また、あまり無いとは思いますが、


カナ文字の判定に不備があり、「パ゚」などの場合は、2つ目の「゚」が変換されなかったりしています。


このプログラムなら、コピペして、起動のプロシージャーだけ直せば、どこでも使用可能です。




同じテーマの最新記事

コメント

[コメントをする]

コメント投稿

一緒にプレゼントも贈ろう!

Amebaおすすめキーワード

    アメーバID登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト