カタカナはそのままで英数字のみを半角に変換する関数

カタカナはそのままで英数字のみを半角に変換する関数です。

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

Follow me!