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

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

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

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Q&A

解決済

1回答

2603閲覧

word VBAで【】内の数字を+1する方法について。

hood

総合スコア351

VBA

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

0グッド

1クリップ

投稿2018/09/22 07:48

###word VBAで【】内の数字を+1する方法について。
お世話になっております。
題目通り、word VBAで【】内の数字を+1する方法について困っています。

私は以前、この掲示板である方から「カーソルより下に出てくる全ての数字に1を足す」コードについてアドバイスをいただきました。
それは上手く機能し、本当に感謝しかありません。

しかし、ついさっき、「カーソルより下に出てくる全ての数字に1を足す」のではなく、「カーソルより下に出てくる全ての[]内の数字に1を足す」動作をさせる必要が出てきました。

これはどうすれば実現できるのでしょうか?
検索するところまでは自力でできたのですが、+1するところでこけました。

以下に「カーソルより下に出てくる全ての数字に1を足す」コード、また、私が改良を試み、上手くいかなかった「カーソルより下に出てくる全ての[]内の数字に1を足す」コードを記したいと思います。

どうかご教授いただけると助かります・・・!

「カーソルより下に出てくる全ての数字に1を足す」

lang

1 2Sub PlusNumber() 3 Dim sel As Word.Selection 4 Set sel = Selection 5 6 '「カーソルより下を検索する部分」 7 Do 8 With sel.Find 9 .Text = "([0-9]{1,3})" 10 .MatchFuzzy = False 11 .MatchWildcards = True 12 13 '.Execute()がTrueなら該当文字列が見つかった 14 If Not .Execute() Then 15 'Falseなら見つからなかった 16 Exit Do 17 End If 18 End With 'sel.Find 19 20 21 '「数字に+1」 22 sel.Text = sel.Text + 1 23 24 sel.Collapse Direction:=wdCollapseEnd 25 Loop 26 27End Sub 28

「カーソルより下に出てくる全ての[]内の数字に1を足す」コード(上手くいかなかった・・・)

lang

1Sub PlusNumber kakko() 2 Dim sel As Word.Selection 3 Set sel = Selection 4 5 '「カーソルより下を検索する部分」 6 Do 7 With sel.Find 8 .Text = "[" & "([0-9]{1,3})" & "]" 9 .MatchFuzzy = False 10 .MatchWildcards = True 11 12 '.Execute()がTrueなら該当文字列が見つかった 13 If Not .Execute() Then 14 'Falseなら見つからなかった 15 Exit Do 16 End If 17 End With 'sel.Find 18 19 20 '「数字に+1」 21 sel.Text = "ここをどうすればいいのか分からない。" 22 23 sel.Collapse Direction:=wdCollapseEnd 24 Loop 25 26End Sub 27

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

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

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

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

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

guest

回答1

0

ベストアンサー

Find.Textに設定した()で括った部分が取得できるといいのですが、調べてもわかりませんでした。
なので無理やりですが、[]付きで取得した値から、前後の[]を削除して+1したあと、また[]を前後につけるようにしてみました。

VBA

1 sel.Text = "[" & (Mid(Left(sel.Text, Len(sel.Text) - 1), 2) + 1) & "]"

WordのVBAは普段使わないので他に良い手段があるかもしれません。
参考程度にしてください。

ちなみに.Textのところは&で分ける必要はないです。

VBA

1 .Text = "[" & "([0-9]{1,3})" & "]" 2         ↓ 3 .Text = "[([0-9]{1,3})]"

わかりやすさのために敢えてそうしていたのならスルーしてください。

投稿2018/09/22 08:30

ttyp03

総合スコア16998

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

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

hood

2018/09/22 10:01

回答ありがとうございます! ご回答いただいたコードを試してみたら、上手くいきました! &で分ける部分も、私の知識不足のせいです・・・ご指摘ありがとうございます・・ >WordのVBAは普段使わない 確かに本屋さんにいっても書籍がありませんでした・・・(amazonで買ったけど、ほぼほぼ役に立たないという・・) 現状、文書処理はwordが一番使い勝手がいいかなと思ったんですけど、また検討が必要ですね・・・ ともかくこういったアドバイスもいただけて嬉しいです。 重ね重ねになりますが、ありがとうございました!
ttyp03

2018/09/22 10:05

ただ単に私の仕事環境ではWord文書に対して何かを自動化する必要性がないだけでして、世の中には必要としている人もいるんですよね。 でもやっぱりExcelに比べたら極めて少数でしょうね。
hood

2018/09/25 23:07

なるほど・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問