◆◆MS-Excel2000スキルアップ講座/VBA編◆◆

英数字のみを全角から半角に変換する
英数字のみを全角から半角に変換し、さらにカタカナは半角にしない方法について説明しています。
方法1

Function test_conv(va As Range)
Dim s, st, tmp As String
Dim i, cd, ln As Integer
Dim samp As String

Application.Volatile 'Subでは使わない。

samp = "1234567890ABCDEFGHIJKLMNOPQRSTUVWX
YZabcdefghijklmnopqrstuvwxyz"  'ここで変換した
いものを列記した
tmp = ""

st = va.Value
ln = Len(st)

For i = 1 To ln
s = Mid(st, i, 1)

If InStr(samp, s) > 0 Then
tmp = tmp + StrConv(s, vbNarrow)
Else
tmp = tmp + s
End If
Next i

test_conv = tmp

End Function

Functionにしましたが,Subでもよいとおもいます。

方法2

Public Function ZenToHanAlnum( _
                    ByVal str As String _
                ) As String
    Dim i As Integer
    Dim ch1 As String
    Dim ch2 As String
    ZenToHanAlnum = ""
    For i = 1 To Len(str)
        ch1 = Mid(str, i, 1)
        ch2 = StrConv(ch1, vbNarrow)
        Select Case ch2
        Case "0" To "9", _
             "A" To "Z", _
             "a" To "z"
            ZenToHanAlnum = ZenToHanAlnum & ch2
        Case Else
            ZenToHanAlnum = ZenToHanAlnum & ch1
        End Select
    Next i
End Function