|
>>カタカナ⇒全角
もあったんですねえ・・・。
これは、正規表現の応用で可能なのですが・・・。
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=7979;id=excel
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=18465;id=excel
こんな投稿もしてました。
継ぎ接ぎで申し訳ありませんが
(と言っても継ぎ接ぎできるからプロジャー分割しているんですが)
'=================================
Dim regEx, Match, Matches
'=================================
Sub main()
Dim rng As Range
Application.ScreenUpdating = False
Set regEx = CreateObject("VBScript.RegExp")
For Each rng In ActiveSheet.UsedRange
With rng
.Value = alph_cnv_narrow(.Value)
.Value = kana_cnv(.Value, 4)
End With
Next
Set regEx = Nothing
Application.ScreenUpdating = True
End Sub
'=========================================================
Function alph_cnv_narrow(strng)
regEx.Pattern = "([A-Z])+"
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(strng)
alph_cnv_narrow = strng
If Matches.Count > 0 Then
For Each Match In Matches
regEx.Pattern = Match.Value
regEx.IgnoreCase = False
alph_cnv_narrow = regEx.Replace(alph_cnv_narrow, StrConv(Match.Value, vbNarrow))
Next
End If
End Function
'==================================================================
Function kana_cnv(cnv_str, w_or_n As Long)
'指定された文字列のカタカナを全角又は、半角に変換する
'input---cnv_str---変換する文字列
' w_or_n 変換指示 4-全角変換 8-半角変換
'output--kana_cnv 変換された文字列
With regEx
If w_or_n = 4 Then
.Pattern = "([。-、]|[ヲ-゚])+" '正規表現をちょっと変更
ElseIf w_or_n = 8 Then
.Pattern = "([ァ-ヶ]|゛|゜|、|。|「|」|ー)+"
Else
Exit Function
End If
.IgnoreCase = True
.Global = True
Set Matches = .Execute(cnv_str)
kana_cnv = cnv_str
If Matches.Count > 0 Then
For Each Match In Matches
.Pattern = Match.Value
.IgnoreCase = False
kana_cnv = regEx.Replace(kana_cnv, StrConv(Match.Value, w_or_n))
If w_or_n = 8 Then kana_cnv = Replace(kana_cnv, "ク", Chr(&H8168))
Next
End If
End With
End Function
確認して下さい。
|
|