• ベストアンサー

EXCEL Worksheet_SelectionChangeイベントについて

EXCELのVBAについて教えて下さい。 EXCEL の Worksheet_SelectionChange を、必要に応じて、ENABLEにしたりDISABLEにしたりできないでしょうか? どこかのセルを参照したりして、有効か無効かを判断するしかないでしょうか? ?????.enabled = true,falseで 有効・無効を切り替えできればと思っていますが。 分かる方がいらっしゃれば、教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

Application.EnableEvents = True Application.EnableEvents = False では、どうですか?

jackjack12
質問者

お礼

思ったように動作しました。 助かりました。 ありがとうございました。

その他の回答 (1)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

こういうことでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) 'A1セル以外が変更されたら何もしない If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub '処理 End Sub 指定のセルであっても場合によってはイベントを発生させたくないのであれば、 他のプロシージャで制御するしかないと思います。

jackjack12
質問者

お礼

Worksheet_Change ではなく、Worksheet_SelectionChange イベントです。 連続入力時は有効で、編集時は無効にするなどの使い分けに使用したいと考えています。

関連するQ&A

  • Excel VBA でイベント"Worksheet_Change"を使

    Excel VBA でイベント"Worksheet_Change"を使って,データの追加処理中に,イベントが連続発生してしまい,エラー発生となります。解決方法のヒントがありませんか? 1)イベント発生を一時的に受け付けない構文の "Application.EnableEvents = False" を処理ルーチンの先頭に入れています。 2)データテーブル表の特定処理「データを追加のため,"セル挿入"→"データ投入"」を行うとイベントの連続発生があるので,"セル挿入"と"データ投入"との間に "Application.Wait (Now() + TimeValue("00:00:01"))" を入れて,タイミングを遅らせていますが効果ありません。

  • Excel VBA Worksheet_Change イベントについて

    Excel VBA Worksheet_Change イベントについて質問です。 セルH8とI8を結合し、入力規則よりリストボックスを配置しました。 本シートにWorksheet_ChangeをVBAで作成しましたが、 セルH8:I8をDeleteすると実行時エラー13が発生します。 If Target = "" then exit sub end if や If Target.value = "" then exit sub end if や If Target <> "" then 処理 end if としても対処できませんでした。 よい対処方法のアドバイスよろしくお願いします。

  • worksheet_changeの一時無効化

    VBAエクセル初心者です。 セルの値を手入力変更すると赤字で表示されるようWorksheet_Changeメソッドを利用しています。 これをあるマクロ(Subプロシージャ)の実行中だけ無効にすることはできますか? 外部データを参照し列や行を削除や挿入して更新するマクロなのですが列を選択するとこのChangeメソッドにひっかかってしまい、エラーがでてしまいます。 何かよい方法はあるでしょうか・・・?

  • エクセルVBAでユーザーフォーム

    エクセルVBAでユーザーフォーム上にオプションボタンが2つ、コンボボックスが6つあります。 OptionButton1をクリックした場合のComboboxの動きの制御について以下のように書いてみました。 これでも期待通りCombobox1~3は動き4~6は動かなくなります。 ただ、もっと別の簡単な書き方があるのではないかと思い質問しました。 宜しくお願いします。 Private Sub OptionButton1_Click() ComboBox1.Enabled = True ComboBox1.ListIndex = 0 ComboBox2.Enabled = True ComboBox2.ListIndex = 0 ComboBox3.Enabled = True ComboBox3.ListIndex = 0 ComboBox4.Enabled = False ComboBox4.ListIndex = 0 ComboBox5.Enabled = False ComboBox5.ListIndex = 0 ComboBox6.Enabled = False ComboBox6.ListIndex = 0 End Sub

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

  • Excel 2003 VBA Worksheet_Changeの動作速度について

    Excel2003を使用しています。 セルに入力した文字列の前後のスペースをカットする為にTRIMを用いて Private Sub Worksheet_Change(ByVal Target As Range) Target.Value = Trim(Target.Text) End Sub と記述したところ、動作は思惑通りなのですが、処理速度が異様に重いです。 私の環境(VISTA Home Premium,Core2 Duo 2.20GHz)では、セル値を変更した後必ず3~5秒処理が固まります。 不本意ですが Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Value = Trim(Target.Text) End Sub と、Worksheet_SelectionChangeを使うと全くストレスを感じず処理されますが、セルを再度選択してやらないとTRIMされませんし…。 私の環境だけがWorksheet_Changeでの処理が遅いのでしょうか? よく似た環境のみなさんはどうでしょう? 原因が分からなくて気持ち悪いです… 私個人の環境の問題? Excel2003の問題? 記述の問題? 何かご存じの方居られましたらよろしくお願いします。

  • Excel VBAのWorksheetとsheetの違いが知りたい

    Excel VBAのWorksheetとsheetの違いが知りたいです。 同じsheetが付いているので、同じと思ってしまうのですが・・・ こういう背景というか概念について詳しい方教えてください。

  • Worksheet_Changeイベントでドラッグ方向の取得?

    エクセルVBA のWorksheet_Changeイベントで 例えば、A1セルをクリックしA2へドラッグした場合、Target.addressはA1:A2になりますが、A2セルをクリックしA1へドラッグした場合でもTarget.addressは同じです。 上から下へドラッグしたか、下から上なのか判定する方法はありますか?

  • エクセル2003で作成したVBAを2007で使用したい

    エクセル2003で下記のようなVBAを作成していました。 作成した物を使用者が印刷設定を変更できないように ブックを開くと同時に印刷ボタンなどを非表示にしていたのですが・・・ 2007でも使用出来るようにしたいと思ったのですが 2007ではこのままではエラーが出てしまうようです。 2007はまったく扱ったことがないのでどのようにすればよいかわかりません。 どなたかご教授いただけたらと思います。 Private Sub Workbook_Open() Application.DisplayStatusBar = False 'ステータスバー非表示 'ブックを開く時ページ設定と印刷を非表示 On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("ページ設定(&U)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷(&P)...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷プレビュー(&V)").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)") _ .Controls("印刷範囲(&T)").Enabled = False Application.CommandBars("Standard").Enabled = False End Sub

  • SelectionChangeとChangeの違い

    エクセルのシートイベントには、 ・Worksheet_Change ・Worksheet_SelectionChange がありますが、違いはなんでしょうか? ・Worksheet_Changeはセルの値が変わったら発動 ・Worksheet_SelectionChangeは、 セルの選択が変わったら発動なおかつセルの値が変わったら発動 と言うことでしょうか? ・セルの値が変わったら、Changeイベントの方が先に発動する。 であってますか?ご回答よろしくお願いします。

専門家に質問してみよう