質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

386閲覧

エクセルVBAの正規表現を使用し、セルに入力された値が1以上12以下かを判定したい

maru3

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/08/02 02:06

前提・実現したいこと

エクセルVBAの正規表現を使用し、セルに入力された値が1以上12以下かを判定したい

業務上、正規表現を使用するという事が前提です。
大変申し訳ございませんが、正規表現以外の回答はご遠慮ください。

どうぞよろしくお願いいたします。

発生している問題・エラーメッセージ

下記のコードだとセルに100を入力しても[True]が出てしまいます。

該当のソースコード

Sub test()

Dim regExp As Object Dim reg As Variant Dim target As Variant Set regExp = New regExp target = 100 regExp.Pattern = "[1-9]|1[0-2]" reg = regExp.test(target) MsgBox reg

End Sub

補足情報

Excel 2016,Office365

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/08/02 02:10

>業務上 先輩か上司に聞かれては
meg_

2021/08/02 04:28

> 業務上、正規表現を使用するという事が前提です。 よろしければ理由を教えていただけませんか?
guest

回答1

0

ベストアンサー

正規表現が部分一致になっているのではないでしょうか?

"^([1-9]|1[0-2])$"のように、先頭と末尾を明示してみましょう。

投稿2021/08/02 02:09

maisumakun

総合スコア145262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maru3

2021/08/02 02:16

頂いた回答で、無事に解決いたしました。 自分が書いたものは、部分一致になるのですね。 分からずに書いていました。間違いもご指摘いただき感謝感謝です。 とても助かりました。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問