カタカナはそのままで英数字のみを半角に変換する関数
カタカナはそのままで英数字のみを半角に変換する関数です。
Function ConvertToHalfWidth(originalText As String) As String
Dim i As Integer
Dim charCode As Integer
Dim resultText As String
' 文字列を1文字ずつ処理
For i = 1 To Len(originalText)
' 文字のUnicodeコードを取得
charCode = AscW(Mid(originalText, i, 1))
' カタカナ(U+30A0 ~ U+30FF)以外の文字は半角に変換
If charCode < &H30A0 Or charCode > &H30FF Then
' 英数字の場合、半角に変換
If charCode >= &HFF01 And charCode <= &HFF5E Then
charCode = charCode - &HFF00 + &H20
End If
End If
' 結果の文字列に追加
resultText = resultText & ChrW(charCode)
Next i
' 結果を返す
ConvertToHalfWidth = resultText
End Function
ConvertToHalfWidthという関数を作成し、指定された文字列の各文字を1文字ずつ処理して、カタカナはそのまま、英数字のみを半角に変換します。以下のTestConvertToHalfWidthサブルーチンでは、この関数を使って変換前と変換後の文字列を表示しています。
Sub TestConvertToHalfWidth()
Dim originalText As String
Dim halfWidthText As String
' 変換する文字列を指定
originalText = "ABC123 カタカナ"
' カタカナはそのまま、英数字のみ半角に変換
halfWidthText = ConvertToHalfWidth(originalText)
' 結果を表示
MsgBox "変換前: " & originalText & vbCrLf & "変換後: " & halfWidthText
End Sub