文字列内の指定文字種検索 Hit Counter

対象バージョン : 97, 2000, 2002, 2003
最終更新日 : 2005/04/25 (オリジナル作成日:1998/03/06)


概 要 

 文字列から、半角カタカナ、外字等を検索するユーザー定義関数です。

 

構 文

 InStrType(Start, String, Type)

 

解 説

 InStrType 関数は、指定した文字種の文字が含まれていた場合、その文字位置を返します。

 InStrType 関数で指定する引数は次のとおりです。

引 数 内     容
Start 検索を始める文字位置を数字式で指定します。
String 検索対象の文字列式を指定します。
Type 検索する文字種を数字式で指定します。

 

文字種

半角文字

11 英字・数字・記号
12 カタカナ
13 制御符号・その他

全角文字

21 第一水準
22 第二水準
23 外字

 この関数は、指定文字種がみつからなかった場合 0 を返します。


プロシージャ

Public Function InStrType(argStart, argStr, argType As Integer) As Long
Dim lngPos As Long

If IsNull(argStr) Then Exit Function

For lngPos = argStart To Len(argStr)
    If CharType(Mid(argStr, lngPos, 1)) = argType Then
        InStrType = lngPos
        Exit For
    End If
Next
End Function

Public Function CharType(argChar As String) As Integer
Dim byt1stByte As Byte
Dim byt2ndByte As Byte

If LenB(StrConv(argChar, vbFromUnicode)) = 1 Then
    byt1stByte = AscB(StrConv(argChar, vbFromUnicode))
    If byt1stByte >= &H20 And byt1stByte <= &H7E Then
        CharType = 11
    ElseIf byt1stByte >= &HA1 And byt1stByte <= &HDF Then
        CharType = 12
    Else
        CharType = 13
    End If
Else
    byt1stByte = AscB(LeftB(StrConv(argChar, vbFromUnicode), 1))
    byt2ndByte = AscB(RightB(StrConv(argChar, vbFromUnicode), 1))
    If byt2ndByte < &H40 Or byt2ndByte = &H7F Or byt2ndByte >= &HFD Then
        CharType = 23
    ElseIf byt1stByte < &H81 Or (byt1stByte > &H9F And byt1stByte < &HE0) _
            Or byt1stByte > &HEF Then
        CharType = 23
    ElseIf byt1stByte <= &H97 Or (byt1stByte = &H98 _
            And byt2ndByte <= &H9E) Then
        CharType = 21
    Else
        CharType = 22
    End If
End If
End Function

使用例

 選択クエリーで、氏名に外字が含まれているものを検索する例です。

tch_032_1.jpg (28575 バイト)

 

補 足


目次へ戻る