MS Access

VBAで英字混じりの引数から数字のみを取り出す関数

投稿日:

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。
VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。
カスタム関数を作るにも、これはという情報がググっても見つからなかったので、自作してメモ。

Function FindNumberRegExp(ARG As Variant)
'汎用 引数から数字のみを取り出して返す
'    Dim reg As New RegExp       '// 正規表現クラスオブジェクト
If Not IsNull(ARG) Then
Set reg = CreateObject("VBScript.RegExp")
<pre><code>    '// 検索条件=数字以外を抽出
    reg.Pattern = "[^0-9]"
    '// 文字列の最後まで検索する
    reg.Global = True
    '// 指定セルの数字以外の文字を空文字に置き換える
    FindNumberRegExp = reg.Replace(ARG, "")
End If</code></pre>
End Function

-MS Access

執筆者:

関連記事

FileMakerで画像ファイルを一括インポート

私はAccessとの付き合いが長いので推しソフトなのだが、FileMakerはAccessに無い機能や表示が多いうえ、デザインの自由度になるとAccessを凌駕するので、まったく侮れない。 最近、Fi …

no image

Accessでファイル選択ダイアログを開いて選択したExcelファイルの先頭シートを読み込み番号が一致するデータの配送日を本日日付で消し込む処理

ファイル選択ダイアログを開いて、選択したExcelファイルの先頭シートを読み込み、番号が一致するデータの配送日を本日日付で消し込む処理(楽天販売DB.mdb) ダイアログを表示する際には、事前にMic …

no image

Accessでのテーブルのエクスポート定義

Access2007のテーブルをcsv保存したいのだが、結果ファイルにダブルコーテーションを付けたくない・・・。 ダブルクォーテーションつきであれば、例えば、 DoCmd.TransferText a …

no image

Accessのフォーム/レポートのコントロール同士をくっつけて桝目状にしたい

レポートを、Excelのような桝目の罫線にしたい。 お客からこんなニーズが多い。 やったことがある人ならわかるけど、これが、なかなか苦労する。 レポートのデザインビューで、いざ個々にコントロールをきち …

no image

Accessで、見積書のような「サブフォームつきフォームを丸々コピー」する方法・・・見つけるのに、四苦八苦。

最初、複雑でかつ読み取り専用のクエリを元にしたフォームをコピーしようとしていたために、 acCmdPasteAppendのラインで「コマンドまたはアクション”追加貼り付け”は無効です」のエラーが出て、 …