Excelでアンケートを作成しようとしていて、その回答に基づいて行を表示および非表示にしたいとします。たとえば、D3 = "no"の場合、行D4:D10を非表示にしますが、これを何度も繰り返す必要がありますが、非表示にする行の数は変更されます。したがって、D3 = "yes"の場合は非表示にしてください。その後、D5 = "いいえ"の場合、行D6:D7を非表示にします。そしてこれはずっと続いています。値に基づいて行を表示および非表示にする
答えて
イベントの使用worksheet_change()
イベントを使用します。 VBEで、この変更(このセル)が発生するワークシートをダブルクリックします。そして、次のように入力します
Private Sub Worksheet_Change(ByVal Target As Range)
'Detect if the worksheet change was on cell D3
If Not (Intersect(Target, Range("D3")) Is Nothing) Then
'Hide rows if the value of D3 is "No"
Range("D4:D10").EntireRow.Hidden = (Range("D3").Value = "No")
End If
End Sub
変更は変更がセル「D2」で発生した場合には、このサブルーチンがオフに発火するワークシート、テストで発生するたびに、その値に基づいて行の隠し財産を切り替えます。 EntireRow
範囲オブジェクトの
Hidden
プロパティがTrue
またはFalse
値をとるので、我々はちょうど大幅にコードをあなたの量を簡素化True
かFalse
を返します条件文(Range("D3").value = "No")
の結果にそれが等しくなるように設定することができます書く必要があります。
If Not (Intersect(Target, Range("whatever")) Is Nothing) Then
行を追加して、D5
のような他のセルをテストし、そのセルでテストしている値に基づいて適切な行を非表示にするだけです。
それはあなただけのように一度交差をテストすることができます(すべてのそれらの交差をテストする)あまりにも多くのコードであることを取得する場合:この獣は、任意の変更は、このワークシートに行われている任意の時間を起動しますので、
If Not (Intersect(Target, Union(Range("D3"), Range("D5"), Range("D8"))) Is Nothing) Then
'And then in here your individual lines that toggle the hidden property:
Range("D4:D10").EntireRow.Hidden = (Range("D3").Value = "No")
Range("D6:D7").EntireRow.Hidden = (Range("D5").Value = "No")
...
End If
最後にサブルーチンの実行中にイベントの起動を停止することができます。だから、サブルーチンの先頭にenableEvents
をオフにして、最後にオンに戻すこと:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not (Intersect(Target, Union(Range("D3"), Range("D5"), Range("D8"))) Is Nothing) Then
Range("D4:D10").EntireRow.Hidden = (Range("D3").Value = "No")
Range("D6:D7").EntireRow.Hidden = (Range("D5").Value = "No")
Range("D9:D12").EntireRow.Hidden = (Range("D8").Value = "No")
End If
Application.EnableEvents = True
End Sub
これは、それ自体、それはシートを変更無限ループを引き起こし、エクセルをロック忙しいながらによって呼び出されたばかり、この同じサブルーチンを防ぐことができます(あなたがそれを発射する前にブックを保存しなかった場合には、それはうんざりです)。
フィードバックいただきありがとうございます。私は上記のコードを使用してみましたが、残念ながらそれは私のためには機能しませんでした。私はD3に "いいえ"があるときにランを押すが、その下の行は隠されていない。 – Maddie
実行を押すことはありません。ワークシートが変更されると、このworksheet_changeイベントコードが自動的に実行されます。コードがモジュール内ではなく、ワークシートのコード内にあることを確認してください(VBEのVBAプロジェクトペインでワークシートをダブルクリックして) – JNevill
ワークシート内にあることを確認しましたが、何も起こっていません。 – Maddie
- 1. 開始およびスクロールに基づいてメニューを表示および非表示にする方法
- 2. 注文ステータスに基づいてカスタムフィールドを非表示および表示
- 3. は、テキストボックスの値に基づいてテキストボックスを表示および非表示にします。 angularjs
- 4. チェックボックスの値に基づいてクラスを表示/非表示Jquery
- 5. ドロップダウンリストの値に基づいてコントロールを表示/非表示
- 6. 他の選択値に基づいて選択オプションを非表示および表示
- 7. SSRS値に基づく行の表示/非表示
- 8. Djangoのドロップダウンメニューからの選択に基づいてフォームフィールドを表示および非表示にする方法
- 9. ラジオボタンの選択に基づいてdivを表示および非表示にする方法
- 10. Django。ドロップダウンメニューの選択に基づいてDIVを表示および非表示にする方法は?
- 11. ドロップダウンリストの選択に基づいてコンテンツを表示および非表示にしたい
- 12. フォームの値に基づいて可視性を表示/非表示にする
- 13. Excelマクロクエリ:セル値に基づいて行を非表示
- 14. Googleシート:セル値に基づいて行を非表示
- 15. フレキシブルHTML DataGridカラム値に基づいて行を非表示
- 16. セル値(VBA)に基づいて行を非表示にして非表示にする
- 17. ScroolToTopユーザーのスクロールに基づいて表示および非表示を切り替えます
- 18. td値に基づいてカラムを非表示にするjquery
- 19. セルの値に基づいてExcelを非表示にする
- 20. フィールド値に基づいてカスタムボタンを非表示にする
- 21. セルの値に基づいて列を非表示/表示する
- 22. 日付値に基づいてワークシートを表示/非表示するマクロ
- 23. divをラジオボタンの選択に基づいて表示/非表示
- 24. 検索入力に基づいてdivを表示/非表示
- 25. CSS - CheckBoxに基づいて要素を表示/非表示
- 26. ファイルのタイプに基づいてアクションを表示/非表示
- 27. ウィンドウサイズに基づいてカラムを非表示/表示
- 28. 選択に基づいてdivを表示/非表示
- 29. $ _GETに基づいてDivを表示/非表示
- 30. JSFで機能を表示および非表示にする
このサイトからWorksheet_ChangeおよびHiddenを検索してください。 – Jeeped