エクセルの入力で、どの行を操作しているのかわかるように、他の方の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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
-
4
Application.ScreenUpdating=Falseを使うと・・・。
Access(アクセス)
-
5
Application.ScreenUpdatingがならなくなった
Visual Basic(VBA)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
-
8
excelでVBA実行後に画面に残るゴミを無くしたい。
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
11
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
12
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
13
エクセルVBAで、ボタンの文字を変えたい
Excel(エクセル)
-
14
ExcelVBAでセルを編集状態にする方法
Excel(エクセル)
-
15
VBAのWindowオブジェクトとWorkbookオブジェクトの違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのマクロでチェックボックス...
-
Excel・Word リサーチ機能を無...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
特定文字のある行の前に空白行...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
VBAでカタカナ→ローマ字の変換...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excelでボタン(フォームコント...
-
TERA TERMを隠す方法
-
エクセルで特定の列が0表示の場...
-
マクロ実行時、ユーザーフォー...
-
VC++ 2008 EXPRESS "_T"識別子...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelVBA 図形をクリックした...
-
EXCELのVBAでRange("A1:C4")を...
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報