black-holeの日記: Excel/VBA入門: セルの全角英数字を半角に変換し、半角カナを全角に変換する。
とりあえず、表題の通り。
使い方の異なる Functionプロシージャーと Subプロシージャーの二つを作成。
詳細はコードのコメントを参照。
Function ToHankaku(ByVal src As String) As String
'
' 文字列中の半角変換可能な文字を半角に変換する。
' ただし、半角片仮名文字(0xA1-0xCF)は全角に変換する。
' このとき、可能であれば半角・全角片仮名文字と直後の濁点・半濁点が合成される。
'
' 2009/12/17 black-hole: 新規作成
'
'
Dim re As Object
Dim Match As Object
'
' 正規表現オブジェクトを作成
'
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[。-゚]+" ' 1文字以上の半角片仮名
re.Global = True ' 検索範囲はグローバル
'
' 半角変換可能な文字を全て半角に変換
' 全角片仮名文字もいったん半角片仮名に変換される。
'
src = StrConv(src, vbNarrow)
'
' 1文字以上の半角カナを検索し全角に変換
' 半角片仮名文字の直後に濁点・半濁点があればここで合成される。
'
For Each Match In re.Execute(src)
src = Replace(src, Match, StrConv(Match, vbWide), , 1)
Next
ToHankaku = src ' 返り値
End Function
Sub SelToHankaku()
'
' 選択されたセル範囲について、文字列中の半角変換可能な文字を半角に変換する。
' ただし、半角片仮名文字(0xA1-0xCF)は全角に変換する。
' このとき、可能であれば半角・全角片仮名文字と直後の濁点・半濁点が合成される。
'
' 2009/12/17 black-hole: 新規作成
'
'
Dim re As Object
Dim Cell As Range
Dim Match As Object
Dim Str As String
'
' 正規表現オブジェクトを作成
'
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[。-゚]+" ' 1文字以上の半角片仮名
re.Global = True ' 検索範囲はグローバル
'
' 選択されたセル範囲について、以下の処理を実行
'
For Each Cell In Selection
Str = Cell.Value
If Str <> "" Then
'
' 半角変換可能な文字を全て半角に変換
' 全角片仮名文字もいったん半角片仮名に変換される。
'
Str = StrConv(Str, vbNarrow)
'
' 1文字以上の半角カナを検索し全角に変換
' 半角片仮名文字の直後に濁点・半濁点があればここで合成される。
'
For Each Match In re.Execute(Str)
Str = Replace(Str, Match, StrConv(Match, vbWide), , 1)
Next
Cell.Value = Str
End If
Next
End Sub
以上
-- 2010/09/25 題名とトピックを修正 --
Excel/VBA入門: セルの全角英数字を半角に変換し、半角カナを全角に変換する。 More ログイン