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?

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を使った範囲指定は出来ない

関連記事

※この記事

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?