文字列内の指定文字種検索 |
対象バージョン : 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
使用例
選択クエリーで、氏名に外字が含まれているものを検索する例です。
補 足