- ベストアンサー
ExcelのVBAに詳しい人に質問です
表などでアクティブセルの行や列を目立たせるために、下記URLを参考に条件付き書式とVBAを合わせた技を使用しているのですが、アクティブセルを移動するたびにExcel表が点滅?するので、これをどうにか点滅しないようにしたいのですが出来ますでしょうか。 Application.ScreenUpdating = True を使っているのが原因だと思うのですが、無理でしょうか。 ・アクティブセルのある行・列を目立たせる http://www.relief.jp/itnote/archives/001406.php
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どの程度「気になる点滅」なのかは存じ上げませんが・・ 条件付き書式を利用しようとする限りは避けて通れない状況です。 条件付き書式を利用しないやり方として、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.Pattern = xlNone Target.EntireRow.Interior.Color = RGB(204, 255, 255) Target.EntireColumn.Interior.Color = RGB(204, 255, 255) End Sub こんな感じで強引にやる方法もありますが・・・ 一度すべての塗り潰しを解除してしまうという弊害があります。 どんな手段でもそうですが、やはり一長一短ありますので、 どこを妥協するか?というところにかかわってくるのかなぁ、と思いますよ。
その他の回答 (2)
- kmetu
- ベストアンサー率41% (562/1346)
Application.ScreenUpdating = True 画面を再描画させてますからちらつくのは仕方が無いと思われます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
さほど VBA に詳しいわけでもないですが。点滅という現象がどんな内容なのか、今一つピンと来ていないのですが、数式が重くてチラつくということでしょうか? 「Application.ScreenUpdating = True」は Excel に再描画させる指示で、コード云々というよりも、Excel の機能を使っているだけのことです。描画の際に再計算も行われるので、条件付き書式の条件式中に導入されているアクティブセルの行列番号が更新されるわけです。ですから少なくとも Excel というソフトを選んで処理しようとする限り、ご要望のことはなかなか難しいのではないかと。ただし(シートではなく)ブックに既存の各数式を軽くすれば、改善するかもしれませんが。 なお「Application.ScreenUpdating = True」の行は、その代わりに「ActiveSheet.Calculate」などと記述しても、同様の色塗りができます。重い数式のあるシートが別シートである場合は、計算の範囲をアクティブシートに限定することで、何か変わるかもしれませんね。
お礼
回答ありがとうございます。 とても参考になりました。 一度習得した色をまた塗るという方法ならいけそうですね。