• ベストアンサー

Accessの関数について

文字列から数字を取出す方法を教えて下さい。 例えば文字列が”黄金台10”の場合・・・・10を数字として処理したいです。 ”黄金台”は固有でなく固定長ではありません。 ”10”も固有でなく固定長ではありません。 ”10黄金台”はVal(10黄金台)で出来ます。 Val(黄金台10)は0となり出来ません。 StrReverse(”黄金台10”)は”01台金黄”となり Val(StrReverse(”黄金台10”))は1なります・・・・・10が欲しいです。 ”黄金台-10”だと”-”でInStr関数も利用できるのですが

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

こういう時は正規表現を使います。 Sub サンプル() Dim 正規表現 As Object Dim 一致集合 As Object Dim 一致個別 As Object Dim テキスト As String '正規表現をインスタンス化する Set 正規表現 = CreateObject("VBScript.RegExp") '★ここからはどちらかを選ぶ '半角数字の場合 正規表現.Pattern = "\d+" '全角数字の場合 正規表現.Pattern = "[0-9]+" '最初の数字列だけを処理する場合 正規表現.Global = False '全ての数字列を処理する場合 正規表現.Global = True '★--ここまで 'サンプル文字列 テキスト = "黄金台10" 'パターンに一致した部分のみ取り出す Set 一致集合 = 正規表現.Execute(テキスト) '正規表現を解放する Set 正規表現 = Nothing '個別に処理する For Each 一致個別 In 一致集合   Debug.Print 一致個別.Value   '使用済みオブジェクトを解放する   Set 一致個別 = Nothing Next '一致集合を解放する Set 一致集合 = Nothing End Sub 正規表現はとても便利なものです。 プロパティやメソッド、構文は下記を参照 してください。 http://msdn.microsoft.com/ja-jp/library/cc392487.aspx http://msdn.microsoft.com/ja-jp/library/cc392020.aspx

関連するQ&A