ID非公開

2021/5/11 17:58

33回答

MS-Accessにて、

Microsoft Access19閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ご回答ありがとうございました 丁寧な説明と、クエリとコードの使い方までわかりやすくご教授いただき、無事解決いたしました。 また他の方々も、貴重なご意見ありがとうございました。 大変勉強になりました。

お礼日時:5/13 23:02

その他の回答(2件)

0

VBAで自作関数を作る場合です。 5桁の数値のみ返します。 無い場合は空白("")を返します。 複数ある場合は最初の数値を返します。 クエリ内でも使えます。 Function num5(s As String) As String Dim re As Object Dim mc As Object Set re = CreateObject("VBScript.RegExp") re.Pattern = "(^|\D)(\d{5})($|\D)" '5桁の数値のみ Set mc = re.Execute(s) If mc.Count > 0 Then num5 = mc(0).SubMatches(1) End Function 関数を大量に使う場合(クエリの中などの場合)は、下の方が少しは速くなるかもしれません。 Function num5(s As String) As String Static re As Object Dim mc As Object If re Is Nothing Then Set re = CreateObject("VBScript.RegExp") re.Pattern = "(^|\D)(\d{5})($|\D)" '5桁の数値のみ Set mc = re.Execute(s) If mc.Count > 0 Then num5 = mc(0).SubMatches(1) End Function

0

半角の数値のみ取り出す処理としています。 5桁固定など拘る必要があれば長さチェックなど入れてもらえたら。 参照設定で Microsoft VBScript Regular Expression 5.5 を追加 Public Function retNumberRegExp(inString As String) As String Dim myRegEx As RegExp Dim oMatches As MatchCollection Dim oMatch As Match Set myRegEx = New RegExp myRegEx.Global = True myRegEx.Pattern = "[0-9]" Set oMatches = myRegEx.Execute(inString) iCount = oMatches.Count For i = 0 To iCount - 1 Set oMatch = oMatches.Item(i) retNumberRegExp = retNumberRegExp & oMatch.Value Next End Function