| 文字列内の指定文字種検索 |
|
対象バージョン : 97, 2000, 2002, 2003
最終更新日 : 2005/04/25
(オリジナル作成日:1998/03/06)
概 要
文字列から、半角カタカナ、外字等を検索するユーザー定義関数です。
構 文
InStrType(Start, String, Type)
解 説
InStrType 関数は、指定した文字種の文字が含まれていた場合、その文字位置を返します。
InStrType 関数で指定する引数は次のとおりです。
| 引 数 | 内 容 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Start | 検索を始める文字位置を数字式で指定します。 | |||||||||||||||||
| String | 検索対象の文字列式を指定します。 | |||||||||||||||||
| Type | 検索する文字種を数字式で指定します。
|
この関数は、指定文字種がみつからなかった場合 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
使用例
選択クエリーで、氏名に外字が含まれているものを検索する例です。

補 足