[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『保存時のApplication.EnableEventsのリセット』(さわ)
以下についてお伺いします。 シートに対し、Worksheet_SelectionChangeイベントを使用してセルの入力規則を設定しています。 イベントが動いている間はコピペなどが出来ず不便なので、切り替えボタンを用意して EnableEventsのTrue、Falseを切り替えられるようにしました。
sub M_shtCodeChange() with worksheets("対象シート") if(.cells(1,4).value = "シートコード実行中")then Application.EnableEvents.false .cells(1,4).value = "シートコード停止中" else Application.EnableEvents.true .cells(1,4).value = "シートコード実行中" endif end with end sub
業務PCで作成している為、上記は簡略化して手打ちしています。 個人PCでは実行出来ないため、エラー等ありましたらすみません。
とりあえず、上記で希望のことは出来ていますが、 保存時にEnableEventsをtrueにして、セルの記述も「〜実行中」にしたくコードを書きましたが false時は実行されず調べたところ、EnableEventsがfalseの時は「Workbook_beforeSave」も抑制されるようです。
EnableEventsが一部のイベントのみに作用するようなオプションがあれば良かったのですが、それもなさそうなので見直しが必要になりました。 ユーザーに「使い終わったら実行中に戻してから保存してね」という運用は避けたく、なにか別案など考えられないでしょうか。
上記は手段ですので、目的である「Worksheet_SelectionChangeイベント中にコピペが出来なくなる」という不便が取り除ければ、全く違うアプローチでも何でも良いです。 なにかヒントがありましたらご教示願います。 よろしくお願いいたします。
< 使用 Excel:Office365、使用 OS:Windows10 >
SelectionChangeの中身はだいぶ複雑で、対象のシートに入力規則を設定するものですが、 選んだ項目によって、別シート「プロジェクトデータベース」から次の項目の候補を絞って設定するものです。 例えば、対象シートで「営業者」を選んだら、隣の「案件名」のセルにプロジェクトデータベースシートから、 その営業者が担当している案件を検索してリスト化し、入力規則のリストにしています。 これを複数項目に対して行っています。 (さわ) 2021/02/26(金) 00:08
>イベントが動いている間はコピペなどが出来ず不便 Worksheet_SelectionChange のコードを見直す余地はあると思いますが、 一番簡単に手を入れるとすると、 Application.EnableEvents でコントロールしないで、 フラグを立てて、Worksheet_SelectionChange の最初に実行するかしないか決める という方法がいいかなぁとおもいます。
Public EnableSelectionChange As Boolean ' フラグ
Private Sub CommandButton1_Click() ' フラグの切り替え
If (Me.Cells(1, 4).Value = "シートコード実行中") Then Me.EnableSelectionChange = False Me.Cells(1, 4).Value = "シートコード停止中" Else Me.EnableSelectionChange = True Me.Cells(1, 4).Value = "シートコード実行中" End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not EnableSelectionChange Then Exit Sub ' フラグがFalseなら実行しない
Debug.Print "SelectionChange"
End Sub (´・ω・`) 2021/02/26(金) 09:06
また、親項目の内容に連動して入力規則のリストが切り替わるだけならマクロ無しで可能ですから、そういった方法に変えるのも検討してみてはどうでしょうか。
(もこな2) 2021/02/26(金) 09:07
また、たしかにChangeイベントの方が良さそうですのでそのあたりも見直してみます。
書き換えて不都合など出ました際は引き続きご相談したいのですが、一旦こちらで解決といたします。
重ねてお礼申し上げます。
(さわ) 2021/02/26(金) 10:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.