
我有一個單元格 (D3),其下拉式選單包含 8 個項目(所有單字)。根據所選的下拉項目,我想隱藏 K 列中沒有該特定單字的所有其他行(從開始起 11 列)。
我還需要一個選項來顯示所有行(如果從下拉式選單中選擇“所有行”)。
關於與下拉式選單單元格值相關的 VBA 有什麼想法嗎?
另外,當選擇下拉式選單時,如何將 VBA 程式碼與下拉式選單相關聯?
謝謝你,我很感激任何幫助。
這段程式碼看起來正確嗎?子階段TargettoStart()
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 =錯誤的
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 模組分配給控制項的更多信息,請使用 Internet 並研究如何執行這些操作。
如果您遇到問題,請在此提問。