![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_11.png?c9bd177)
wordマクロについての質問です。
文書の中に2種類の特定の文字列が交互に登場するものがあります。
それらを<特定の文字列A>と<特定の文字列B>とした場合に、<特定の文字列A>から<特定の文字列B>の直前までに下線赤、同様にBからAの直前に下線青、というマクロを組みたいと考えてます。
※添付した画像の様に、左の文書を右の様にしたいです。
・選択範囲を抽出するコード(<特定の文字列A>から<特定の文字列Bの直前>を選択)
・下線効果を施すコード
を組み合わせたものを繰り返し処理させるさせるのだとは思いますが、上手くいきません。。
マクロ自体は「Aの範囲に下線赤」と「Bの範囲に下線青」のマクロは別々でも大丈夫です。
(片方教えていただければ、それを元に残りを作ります)
どなたか何卒よろしくお願いします。。。
![「word VBA 文字列から文字列への選」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/542845004_5c19eb93eacd8/M.png)
No.1ベストアンサー
- 回答日時:
マクロは得意ではないので、もっと良い設定で書き方などがあると
思いますが。
片方だけのマクロでもよいとのことなので、以下を試して下さい。
このマクロは特定の文字列ではなく、特定の文字のみで使用できる
マクロです。
ですから、「特定の文字列A」に対して文書内では使われていない
記号や文字を先頭に記入しておきます(置換でもよい)。
例えば「*特定の文字列A」と「+特定の文字列B」などにします。
最後にある「+特定の文字列B」以降に下線が設定されないので、
下線を設定したい範囲直後に「*」を入れておけば、その直前まで
下線を引いてくれます。
Sub キーワード直前までの文章に下線()
Dim myRange As Range
Dim myKW As String
myKW = "*" ' 「*特定の文字列A」を検索するため
If myKW = "" Then
Exit Sub
Else
Set myRange = ActiveDocument.Range(0, 0)
End If
With myRange.Find
.Text = myKW
End With
With myRange
Do While .Find.Execute = True
.MoveEndUntil Cset:="+" ' 「+特定の文字列B」直前
.Select
.Font.UnderlineColor = wdColorRed
.Underline = wdUnderlineSingle
.Collapse direction:=wdCollapseEnd
Loop
End With
Set myRange = Nothing
End Sub
これで、赤い下線を引くことができます。
参考にしたサイト
https://ameblo.jp/gidgeerock/entry-11201806899.h …
青い下線は"+"と"*"を入れ替えて、wdColorRedをwdColorBlueに
すれば可能だと思います。
文字列の先頭に追加した記号などは、マクロの終了後に置換で削除
すれば、希望のレイアウトになっていると思いますよ。
(置換もマクロとして登録しておけば、もっと楽かも)
enunokokoroさん
ありがとうございます。いただいたコードの通りに行ったところ上手く動きました。
MoveEndUntil を使って文字列の指定ができればもっと楽なのになと思いましたが、無いものなんですね、、、。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Word(ワード) Wordの表中の文字を選択した時の白黒反転の違い 1 2023/04/25 12:13
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
エクセルのカメラ機能について
-
エクセルで別のセルにあるふり...
-
Excelのマクロについて教えてく...
-
マクロの連続実行
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
エクセルVBAで保護したシー...
-
エクセルVBA
-
ソース内の行末に\\
-
VB6 OLE内のEXCELマクロを実行...
-
チェックボックスに登録したマ...
-
Excel 改ページのVBAうまくい...
-
一つのTeratermのマクロで複数...
-
ループマクロ起動時に他のエク...
-
エクセルに張り付けた写真のフ...
-
VBAで特定の文字を含まない列の...
-
ExcelVBA 図形をクリックした...
-
エクセルの改ページを行ごとに...
-
ExcelのVBA。public変数の値が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelVBAでPDFを閉じるソース
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
TERA TERMを隠す方法
-
2つのマクロでチェックボックス...
-
マクロ実行時、ユーザーフォー...
-
【マクロ】1つのマクロの中に...
-
ピボットテーブルでの毎回可変...
-
特定文字のある行の前に空白行...
-
エクセルのマクロについて教え...
-
wordを起動した際に特定のペー...
おすすめ情報