• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルクリックでマクロ実行の構成について)

セルクリックでマクロ実行の構成について

このQ&Aのポイント
  • A.xlsmというファイルを開いたらsub auto_open()の中でMENUシートのB7,C7,D7…B8,C8,D8…に人の名前を抽出して貼り付けるマクロを動作させます。7行目、8行目共、基本1人の抽出ですが、max3人くらいまで抽出される構成となります。B7セルからD8セルの範囲内で名前が表示されるようになるので、その中で自分の名前をクリックしたら、自分に関係するファイルを開くようにしたい。
  • しかし、Bの処理中にCが動作してしまうため、Bの処理が終わった後にCのマクロを実行する方法を教えてほしい。また、クリックしたセルに色をつけ、他のセルは塗りつぶしなしにする方法も知りたい。
  • B7セルをクリックしたら、7行目と8行目を塗りつぶしなしにして、クリックしたB7セルに色をつけたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> (B)の処理には、セル内容削除や罫線追加などを実施するので7行目と8行目はクリックされまくる感じになります。 この部分のコードが実行される前に Application.EnableEvents = False にして 実行が終わったところで Application.EnableEvents = True としておけば、その間は Worksheet_SelectionChange が実行されることはありません。

3620313
質問者

お礼

ありがとうございます。 やりたい内容が無事解決できました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問の表現は複雑で、理解が大変。 回答は、文章で書いた方がわかりやすいと思って、 マクロの実行(シートのイベントをきっかけに行う実行に限る話をすると)で (1)イベントの種類で、処理は分かれる(当然)    優先劣後関係はあまりないが、少数あったような。 (2)時刻的に先にクリックした方がイベントとして優先 (3)Eventsによっては、Targetのセル番地が判る(返してくれる)から、それが思う範囲かどうかで、実行するしないを分けることができる。思う範囲かどうかは、Application.Intersectメソッドで判定。 https://excel-ubara.com/excelvba1/EXCELVBA402.html (4)イベント全体を、指定した間(解除するまでの間)止める。すべてのイベントで止まり、指定したあのイベントだけ止める、のは出来ないと思う。EnableEvents=False (Eventsとsが着く) ーー 処理のグルグル回りを避けるには(4)を使うことが多い。セルの値のChangeイベントなどの時などで 、VBAでどこかセルの値を変える場合などの場合。