質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

276閲覧

VBA ユーザのセル入力とマクロによるによるプログラムからのセル入力の切り分け

King_of_Flies

総合スコア382

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/10/16 06:30

お疲れ様です。
元Takkoです。
この度諸事情によりアカウント名を変更しました。
ご容赦ください。

さて本題です。

現在VBAでユーザ入力によってワークシート内のセルに変更が加わった場合に呼び出されるプロシージャを用意しているのですが、
マクロ実行によってセルに文字列が入力された場合にもそのプロシージャが呼ばれる状況となっていて、題名の通り、ユーザの入力によるセルの変更か、プログラムによるセルの変更かの切り分けができないかと疑問に思った次第であります。

下記コードによりワークシートの変更処理時にプロシージャ呼び出しをしています。

vba

1Private Sub Worksheet_Change(ByVal Target As Range) 2 Call Module1.SetComboBox 3End Sub 4

この処理の実装でワークシートの変更時にSetComboBoxを呼び出すという処理はできています。

ただ、このワークシート内には別にボタンを押すと呼び出されるプロシージャがあり、
その内部処理でセル内の値を書き換えるようなことをしています。

この処理による書き換えもWorkSheets_Changeは拾ってしまうため、
処理速度が目に見えて遅くなります。

これを回避するために表題の件ができるか否かを尋ねたいのですが、
どのような実装にすればよろしいでしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Application.EnableEventsを使うことでイベントの発生を抑制することができます。

VBA

1Application.EnableEvents = False 2Cells(1,1) = 1 3Application.EnableEvents = True

上記のようにFalseに設定している間はイベントが抑制されますので、SetComboBox内の入口と出口で制御すればよろしいかと思います。

VBA

1Sub SetComboBox 2 Application.EnableEvents = False 3 ' ~処理~ 4 Application.EnableEvents = True 5End Sub

投稿2017/10/16 06:42

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

King_of_Flies

2017/10/16 06:48

回答ありがとうございます。 SetComboBoxのプロシージャ自体を呼び出したくないのですが、 それは不可能でしょうか? >そもそものWorkSheet_Changeイベントをユーザ変更からしか受け付けないようにしたいという意味です。
ttyp03

2017/10/16 06:51

失礼しました。 設定する場所はSetComboBoxではなく、現在マクロ実行している箇所(マクロ内でセルの値を書き換えている箇所)になります。 そこで設定しておけばChangeイベントが発生しなくなるので、SetComboBoxが呼ばれることはなくなります。
King_of_Flies

2017/10/16 06:54

回答ありがとうございます。 無事、求めている動作に行きつけました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問