1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VBScriptで全角・半角変換を行う関数

Last updated at Posted at 2020-07-21

#はじめに
VBAにはStrConvという全角と半角の変換が行える関数が存在するのですが、VBScriptにはないようなので、作成しました。

VBScriptで英数字の半角を全角に、または全角を半角に変換する関数です。
記号やカナには対応していません。
2020.7.27 改良
記号にも対応

参考元:英数文字列を半角または全角に変換

#ソースコード

Option Explicit

Const HAN = " !#$%&?\()[]{}<>=-+*^/,._;:|@`・"      ' ~"'を除く
Const ZEN = " !#$%&?\()[]{}<>=-+*^/,._;:|@`・"

'*****************************************************************************
'[概要] 半角英数字を全角に変換する
'[引数] 変換対象文字列
'[戻値] 変換後文字列
'*****************************************************************************
Function StrConvWide(ByVal strWord)
    Dim i, j, strChar, lngChar
    For i = 1 To Len(strWord)
        strChar = Mid(strWord, i, 1)
        lngChar = Asc(strChar)
        If Asc("A") <= lngChar And lngChar <= Asc("Z") Then
            strChar = Chr(lngChar + Asc("A") - Asc("A"))
        ElseIf Asc("a") <= lngChar And lngChar <= Asc("z") Then
            strChar = Chr(lngChar + Asc("a") - Asc("a"))
        ElseIf Asc("0") <= lngChar And lngChar <= Asc("9") Then
            strChar = Chr(lngChar + Asc("0") - Asc("0"))
        Else
            j = InStr(1, HAN, strChar)
            If j > 0 Then
                strChar = Mid(ZEN, j, 1)
            End If
        End If
        StrConvWide = StrConvWide & strChar
    Next
End Function

'*****************************************************************************
'[概要] 全角英数字を半角に変換する
'[引数] 変換対象文字列
'[戻値] 変換後文字列
'*****************************************************************************
Function StrConvNarrow(ByVal strWord)
    Dim i, j, strChar, lngChar
    For i = 1 To Len(strWord)
        strChar = Mid(strWord, i, 1)
        lngChar = Asc(strChar)
        If Asc("A") <= lngChar And lngChar <= Asc("Z") Then
            strChar = Chr(lngChar - Asc("A") + Asc("A"))
        ElseIf Asc("a") <= lngChar And lngChar <= Asc("z") Then
            strChar = Chr(lngChar - Asc("a") + Asc("a"))
        ElseIf Asc("0") <= lngChar And lngChar <= Asc("9") Then
            strChar = Chr(lngChar - Asc("0") + Asc("0"))
        Else
            j = InStr(1, ZEN, strChar)
            If j > 0 Then
                strChar = Mid(HAN, j, 1)
            End If
        End If
        StrConvNarrow = StrConvNarrow & strChar
    Next
End Function

#余談
VBAでは使える、select case の範囲指定がvbsでは使えないことを初めて知りました。

    Select Case 判定値
    Case 1 To 2  'Toを使った範囲指定は出来ない

#関連記事
VBScriptで全角・半角変換を行う関数 ※この記事
VBScriptでカタカナの全角・半角変換を行う関数
VBScriptでひらがな・カタカナ変換を行う関数

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?