2016-04-04 32 views
1

で非連続の選択の一部をループ私はMS Wordで選択したテキストのハイライトカラーを切り替え2013 VBA(ないエクセル)のマクロを持っています。コードは 次のようになります。連続/連続的な選択のための素晴らしい作品MS Wordの* * VBA

If Selection.Range.HighlightColorIndex = WhtColor Then Selection.Range.HighlightColorIndex = wdNoHighlight Else Selection.Range.HighlightColorIndex = WhtColor 

。しかし、もし私が 、たとえば、行5,12、 15、および19のように、Wordテーブル内の4つの不連続な行を選択すると、マクロは選択された最後の行だけを強調表示します。

にはどうすればHighlightColorIndexが 連続しない範囲の全ての「部」には適用するために取得、または、別の「部」を通じてIループどのように行う範囲の をし、各部分にHighlightColorIndexを適用していますか?

+0

https://support.microsoft.com/en-us/kb/288424 - これは最新のものかわかりません –

+0

それが問題を解決しました。しかし、コードの実際の目的が何であったかを問わず、問題は実際には重複ではありません。 @Tim Williamsが提供するリンクの情報のおかげで、上記の質問を解決しました。 – DRC

+0

申し訳ありません - リンクされたページを投稿する前に完全に読んでいませんでした。私はあなたの質問を再開しましたので、今すぐ答えてください。 –

答えて

2

ティムウィリアムズが指し示すウェブページ(support.microsoft.com/en-us/kb/288424)は、これがどのように可能かについての手がかりを与えます。しかし、そのリンクは、は、非連続選択をループできないことを示しています。

しかし、そのリンクにも示されているのは、不連続な選択に対してはフォント書式が設定され、範囲オブジェクトには設定されないことです。ここで

が非連続的な選択のための作業を行うことを改定コードです:

If Selection.Font.Shading.BackgroundPatternColor = WhtColor Then Selection.Font.Shading.BackgroundPatternColor = wdColorAutomatic Else Selection.Font.Shading.BackgroundPatternColor = WhtColor 

Iからカラーコードを変更する必要がありましたが、コードが選択された目標色(に背景色を変更することWdColor定数に対するWd定数)。

このアプローチの唯一の欠点は、背景色が変更されたテキストを検索する方法がわかりませんが、のハイライト表示されたテキストを検索できます。

とにかく、助けてくれるリンクのための@Tim Williamsさん、ありがとうございます。フォントのプロパティを変更したいだけで、実際には選択範囲の別の部分をループする必要がない他の誰かを助けることを願っています。

+0

ニースは@DRCがここでそれを使用しています:https://stackoverflow.com/a/46106637/3451115(悲しいことに、MSへのリンクは現在死んでいます) – SlowLearner

+0

@SlowLearner - そのポストでのアイデアの賢い応用。ニース。 – DRC

関連する問題