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

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

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

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

Q&A

解決済

2回答

4670閲覧

VBAのFindで*やら+やらの正規表現は使う方法を伺ってよろしいでしょうか?

ma2hiro

総合スコア159

VBA

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

0グッド

0クリップ

投稿2021/11/16 08:22

VBAで頼れる所がTeratailしか知らないため度々書き込み失礼いたします。
VBA - 文字列をVBAで見つける方法を知りたい。|teratail
に書き込もうかとも思ったのですが違う事柄なので新規で書き込み失礼いたします。

今 excelで 37期(2021年) との文字列を検索しようとしております。
そのため

vba

12 Set wb = Workbooks.Open(fname) 3 With Worksheets("過年度のAD") 4 Worksheets("過年度のAD").Select ' 「全社支社利」のシートを選択 5 6 Dim rng As Range 7 Set rng = wb.Worksheets("過年度のAD").Range("A6:Z6") _ 8 .Find((year - 1965) & "期") 9

とやっていたのですが見つからず よく考えると
37期(2021年)
の所で↑が半角(か全角(か定まっていないと気が付きました……

そこで質問なのですが
Findで正規表現などを使用する方法を伺ってよろしいでしょうか?

ググってみたら
ワイルドカードを使って検索(Find メソッド) | ExcelWork.info
を参考に
上記

.Find((year - 1965) & "期*")

としてもNothingなのです……

何か情報をお持ちな方はコメント頂けますと嬉しく思います。

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

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

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

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

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

jinoji

2021/11/16 08:53 編集

2021年は37期なのですか? 御社が何年創業なのか存じ上げないのですが、2021-1965 = 56 ( ≠ 37) です。
jinoji

2021/11/16 13:31

むしろ .Find("期*" & year) としてみるとか。
ma2hiro

2021/11/16 23:58

申し訳ございません。 期は会社バレが嫌だったので適当なので失礼しました。
guest

回答2

0

ベストアンサー

Findメソッドを使うなら、?(任意の1文字)、*(任意の文字列)のワイルドカードが使えます。

vba

1 Dim rng As Range 2 Set rng = wb.Worksheets("過年度のAD").Range("A6:Z6") _ 3 .Find(what:=(year - 1965) & "期*", LookAt:=xlWhole)

上記で、「37期」の検索ワードで「37期(2021年)」もヒットします。


vba

1.Find((year - 1965) & "期*")

でもヒットするはずですが、ヒットしないとすると、下記のデバッグコードを埋め込んで、存在する検索ワードになっているか確認してみてください。

vba

1Debug.print (year - 1965) & "期*"

投稿2021/11/16 12:13

編集2021/11/16 12:21
hatena19

総合スコア34075

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

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

ma2hiro

2021/11/17 00:16 編集

ありがとうございます。 , LookAt:=xlWhole) を付けたらHITしました…… 上記の働きを調べてみますっ 本当にありがとうございましたm(_ _)m …… ??? http://excelvba.pc-users.net/fol7/7_1.html を見た所 ``` xlWhole 全てが一致するセルを検索 ``` となっているのですが省略した場合のデフォルトは違うのかと思ったけど結局 Range("A6:Z6")の範囲が違っていました…….Range("6:6")と6行全て選択とすれば良かったです 本当に大変失礼しました。
guest

0

「VBA 正規表現」でぐぐるといろいろ出てくるようです

投稿2021/11/16 08:26

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問