
エクセルの入力で、どの行を操作しているのかわかるように、他の方のVBAを参考にして
条件付き書式で
=CELL("ROW")=ROW()
VBAにて
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
こちらを併用して表示しています。
マクロ処理で、画面のチラツキをなくすため、
Application.ScreenUpdating = False
としているのですが、先ほどのWorkbook_SheetSelectionChangeの構文が効いていて
画面の動きが出てしまいます。
マクロ実行中だけ、一時的にWorkbook_SheetSelectionChangeの効力を止める、
もしくは代替の方法はありますでしょうか?
No.2ベストアンサー
- 回答日時:
こんばんは
何だか「風通しを良くするために穴をあけたら、雨や虫が入ってくるんだけれど、どうすれば・・?」みたいな感じですね。
>マクロ実行中だけ、一時的にWorkbook_SheetSelectionChangeの効力を止める
ご質問文の通りにするのなら、EnableEventsプロパティをFalseにしておけばイベントの発生を停止できます。
https://learn.microsoft.com/ja-jp/office/vba/api …
(元の状態(=True)に戻さないと、そのままになりますのでご注意)
でも、これって「穴を塞ぐのに、もう一枚壁を作る」みたいなことになっているような気もしますが。
>もしくは代替の方法はありますでしょうか?
実際になさりたいことがよくわからないので、以下は一般論的になってしまいますけれど・・
ご提示の条件付き書式で色付けなどをするとなると、対象セルに全て条件付き書式を設定しておく必要があるのと、ご提示のイベント処理はブック全体を対象にしていますけれど、全シートで同様のことを行うということなのでしょうか?
通常の状態であれば、ScreenUpdating = True の状態になっているはずですので(マクロから意図的に停止した場合は別ですが)、ご提示の内容のためだけにわざわざマクロを使うのであれば、マクロで対象セルに色付けをしてしまえば済む話のようにも思います。
(条件付き書式を設定する必要がなくなります)
元のセルにいろいろな色が設定してあったりすると、元に戻すためにそれを記録しておく必要が生じるので、多少は面倒になりますが・・
>マクロ処理で、画面のチラツキをなくすため~
「チラツキ」を無くすことが主目的なら、マクロ中の Select や Activate などの構文を無くすような記述法にすること、及び、まとめて結果を記入するなどの方法にすることで、ほとんど無くすことが可能ですし、処理速度も向上するはずです。
(新規のブック、シートなどを作成する場合を除く)
一方で、マクロ実行中にシートへの記入等が発生すると、各種イベントは発生しますので、上記のようにイベントを停止しておかないと処理効率が悪くなります。
(処理の組み合わせが悪ければ、抜け出せなくなります)
(不要なイベント処理を設けなければ、その様な必要も生じませんけれど)
回答ありがとうございました。
SelectやActivateは使っていませんが、行数が100行近くあり、ForNextなどでセルをコピーしている関係上、画面がちらつく等の影響がありました。
丁寧に説明していただきありがとうございます。
同様の回答もありましたが、こちらをベストアンサーと
させていただきます。
No.3
- 回答日時:
自分のところでは、画面のチラつきはありませんね。
ところで…… ’ThisWorkbook’ にマクロを記述していますか?
・・・
=AND(CELL("ROW")=ROW(), CELL("COL")=COLUMN())
で、セルの上下左右の罫線を赤。
=CELL("ROW")=ROW()
で、セルの上下の罫線を赤。
=CELL("COL")=COLUNM()
で、セルの左右の罫線を赤。
これを決まった範囲のセルに対して設定。
間違ってもシート全体なんてことはしません。
マクロは
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Application.ScreenUpdating = True
End Sub
でやってます。
ByVal Target As Range
↓
ByVal Target As Excel.Range
の違いはありますが……
・・・余談・・・
いっそマクロを無効にして、[F9]キーで強制的に再計算させるという方法もあります。
(´・ω・`) 面倒だけど、入力しているセルを見失わない限り再計算させる必要もないので、
運用方法としてはありですよ。
そもそもこの[F9]キーを押すのが面倒だからマクロで代用しているってだけですから。
「計算方法」を ”手動” にしておけば、さらに良し。
回答ありがとうございました。
言葉足らずで申し訳ありません。
Private Sub Workbook_SheetSelectionChangeはThisWorkbookです。
セルの色塗りの関係もあるため、条件付き書式が妥当と考えています。
条件付き書式も、必要なセルに対して設定しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
Application.ScreenUpdating=Falseを使うと・・・。
Access(アクセス)
-
6
Application.ScreenUpdatingがならなくなった
Visual Basic(VBA)
-
7
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
8
excelでVBA実行後に画面に残るゴミを無くしたい。
Excel(エクセル)
-
9
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
12
エクセルVBA 作業後に選択範囲を解除する方法
Excel(エクセル)
-
13
Excelでマクロ実行中に画面を固定する方法
Visual Basic(VBA)
-
14
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
15
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
18
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
19
コマンドボタンを押すたびに大きくなってしまう
Excel(エクセル)
-
20
VBAでBook読み込み時の非表示方法は??
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
ExcelVBAでPDFを閉じるソース
-
Excelのセル値に基づいて図形の...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
ダブルクリックで貼り付けた画...
-
wordを起動した際に特定のペー...
-
Excel マクロでShearePoint先の...
-
エクセルで別のセルにあるふり...
-
Word VBA 表中の空白行を削除す...
-
TeraTermのマクロで制御文字の...
-
UWLSの記録でマクロを作成し使...
-
Excelのマクロボタンをダブルク...
-
ExcelのVBA。public変数の値が...
-
Excelマクロで印刷設定
-
ピボットテーブルでの毎回可変...
-
TeraTermマクロの文字列結合
-
時間差を求めるマクロコードを...
-
特定文字のある行の前に空白行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
エクセルで縦に並んだデータを...
-
Excel マクロでShearePoint先の...
-
特定文字のある行の前に空白行...
-
ExcelVBAでPDFを閉じるソース
-
ソース内の行末に\\
-
Excel VBAからAccessマクロを実...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
UWLSの記録でマクロを作成し使...
おすすめ情報