|
▼拝島 さん:
おじゃまします。
>自分が扱ったことのない関数だったり、正規表現だったりと
(1)ASC関数は Applicationオブジェクトのメソッドとして使うと、
セル範囲をループしなくて一括で、半角化できます。
(2)半角カタカナの全角化は(どうも 一括でできる方法はなさそう)
なので、正規表現を使ってセル単位でループして全角化します。
Sub Try1()
Dim r As Range
Dim vv, ss As String, s
Dim regEx As Object
Dim i As Long, j As Long
Set r = Selection '← ◆指定のセル範囲に変更してください
'(1)全角の英数字を半角にし
vv = Application.Asc(r)
'(2)半角のカタカナを全角に
Set regEx = CreateObject("VBScript.RegExp")
'半角カタカナのUnicode範囲 : FF65-FF9F
regEx.Pattern = "[\uFF65-\uFF9F]+"
regEx.Global = True
For i = 1 To UBound(vv)
For j = 1 To UBound(vv, 2)
ss = vv(i, j)
If regEx.test(ss) Then
For Each s In regEx.Execute(ss)
ss = Replace(ss, s, StrConv(s, vbWide))
Next
vv(i, j) = ss
End If
Next
Next
r.Value = vv
Set regEx = Nothing
End Sub
|
|