
8 つの項目 (すべての単語) のプルダウン メニューがあるセル (D3) があります。選択したプルダウン項目に応じて、列 K (開始から 11 列目) の特定の単語のない他のすべての行を非表示にしたいと思います。
また、プルダウン メニューから「すべての行」を選択した場合に、すべての行を表示するオプションも必要です。
プルダウン メニューのセル値に関連する VBA に関するアイデアはありますか?
また、選択時に VBA コードをプルダウン メニューに関連付けるにはどうすればよいでしょうか?
ありがとうございます。どんな助けでも感謝します。
このコードは正しいでしょうか? Sub PhaseTargettoStart()
Dim rMyCell As Range Set rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 If Range("Audit!D3") = "Source Selection" Then Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Source Selection + 4 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Step 5 + 8 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "TKO" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "OTOP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "VP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Process Audit" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PDR" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PS" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Show All" Then
Rows("6:301").EntireRow.Hidden = True
End If
End Sub
答え1
ドロップダウン メニューをフォーマットするときに、メニューで選択された項目の結果を保持するセルを指定します。
これは「セルリンク」と呼ばれ、常に番号ドロップダウン メニュー リスト内のユーザーの選択の位置と同じです。
INDEX()を使用すると、メニュー項目の実際の値(メニュー項目のリストから)を取得できます。このチュートリアルページVBA を使用して行を非表示/表示する方法を示します。
私はこれを始める手助けをしますが、このサイトは「私のためにコードを書いてくれるサイト」ではありません。VBA でコードを書く方法を学ぶには、時間を費やす必要があります。
まず、ドロップダウン リストを正しく設定する必要があります。下の図では、ドロップダウン リスト (コンボ ボックスとも呼ばれます) を使用して、お客様のデータと似たデータを設定しています。
ここでは、コントロールをフォーマットし、入力範囲 (リスト項目) を A2:A8 に、セル リンクを B2 に定義しました。ドロップダウンから「すべて表示」を選択すると、セル B2 には 7 が表示されます。これは、「すべて表示」がリストの 7 番目の項目であるためです。
ここでの課題は、同様のドロップダウン リストを作成し、それに次のマクロを割り当てることです。
Sub ShowHideRows()
'Set up variables
Dim ResultText As String
'Initialize variables
'If choice is "Show All", set ResultText to ABCD, a value that won't be found
'Otherwise, get the text from the list
If Range("B2") = 7 Then
ResultText = "ABCD"
Else
ResultText = Application.WorksheetFunction.Index(Range("A2:A7"), Range("B2"))
End If
MsgBox (ResultText)
End Sub
すべてを正しく実行すると、リストから項目を選択するたびに、選択したリスト項目を表示するメッセージが表示されます。
VBA の作成方法やデバッグ方法、または VBA モジュールをコントロールに割り当てる方法について詳しく知る必要がある場合は、インターネットを使用して、それらの方法を調べてください。
問題が発生した場合は、ここで質問してください。