返回列表 上一主題 發帖

[發問] 下拉式選單, 依據選擇的項目不同, 執行不同的巨集

[發問] 下拉式選單, 依據選擇的項目不同, 執行不同的巨集

目前要製作一個下拉式選單, 當下拉式選單選擇A項目, 就執行A巨集, 選擇B項目就執行B巨集,
A巨集和B巨集都只是顯示和隱藏特定的欄位, 目前卡在製作下拉式選單後只能執行一個巨集,
不管是用資料驗證還是ActiveX製作的下拉式選單都用同樣的問題,
有研究和查詢使用worksheet_change來撰寫程式, 還是無法執行多個巨集, 圖解和巨集如下請各位前輩指點, 謝謝

擷取.JPG
2018-12-14 08:12


Private Sub Workbook_SheetChange(ByVal Target As Range)
Target = Range("A1")
Applicion.Run AMP_100
Applicion.Run Pre_Qual
Applicion.Run GPU
Applicion.Run Class1

End Sub
_______________________________________________________________________________
Sub AMP_100()
Rows("1:1619").EntireRow.Hidden = False

End Sub
________________________________________________________________________________
Sub Pre_Qual()
Rows("1:1619").EntireRow.Hidden = False
Rows("7:1377").EntireRow.Hidden = True
Rows("1404:1619").EntireRow.Hidden = True

End Sub
_________________________________________________________________________________
Sub GPU()
Rows("7:1619").EntireRow.Hidden = True
Rows("7").EntireRow.Hidden = False
Rows("178").EntireRow.Hidden = False
Rows("216").EntireRow.Hidden = False
Rows("226").EntireRow.Hidden = False
Rows("228").EntireRow.Hidden = False
Rows("334").EntireRow.Hidden = False
Rows("378").EntireRow.Hidden = False
Rows("341").EntireRow.Hidden = False
Rows("487").EntireRow.Hidden = False
Rows("494").EntireRow.Hidden = False
Rows("531").EntireRow.Hidden = False
Rows("640").EntireRow.Hidden = False
Rows("647").EntireRow.Hidden = False
Rows("684").EntireRow.Hidden = False
Rows("793").EntireRow.Hidden = False
Rows("800").EntireRow.Hidden = False
Rows("837").EntireRow.Hidden = False
Rows("946").EntireRow.Hidden = False
Rows("953").EntireRow.Hidden = False
Rows("990").EntireRow.Hidden = False
Rows("1033").EntireRow.Hidden = False
Rows("1040").EntireRow.Hidden = False
Rows("1080").EntireRow.Hidden = False
Rows("1132").EntireRow.Hidden = False
Rows("1139").EntireRow.Hidden = False

End Sub
____________________________________________________________________________
Sub Class1()

Rows("7:1619").EntireRow.Hidden = True
Rows("7").EntireRow.Hidden = False
Rows("226").EntireRow.Hidden = False
Rows("1185").EntireRow.Hidden = False
Rows("226").EntireRow.Hidden = False
Rows("1193").EntireRow.Hidden = False
Rows("1378").EntireRow.Hidden = False
Rows("1404").EntireRow.Hidden = False
Rows("1425").EntireRow.Hidden = False
Rows("1432").EntireRow.Hidden = False
Rows("1454").EntireRow.Hidden = False
Rows("1472").EntireRow.Hidden = False
Rows("1492").EntireRow.Hidden = False
Rows("1495").EntireRow.Hidden = False
Rows("1533").EntireRow.Hidden = False
Rows("1558").EntireRow.Hidden = False
阿洋~~~

可以分判處理, 請上傳檔案!!!
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 2# 准提部林


    抱歉 檔案在公司電腦裡面
    我暫時作一個類似的檔案上傳
     請幫忙看看, 謝謝前輩 下拉式選單巨集.zip (16.3 KB)
阿洋~~~

TOP

activex 的 combobox  不就內建 change  副程式嗎?

在工作表1插入一個activex combobox
把程式碼放在工作表1,先run一次test加入測試用資料
Sub test()
'加入測試用資料
ComboBox1.List = Array("1", "2", "3")
'預設值
ComboBox1.ListIndex = 0

End Sub

Private Sub ComboBox1_Change()
      
    Select Case ComboBox1.Value
        Case Is = 1
            test1
        Case Is = 2
            test2
        Case Is = 3
            test3
    End Select
   
End Sub

Sub test1()
    Range("a1") = "a"
End Sub

Sub test2()
    Range("a1") = "b"
End Sub

Sub test3()
    Range("a1") = "c"
End Sub

TOP

工作表區:
Private Sub ComboBox1_Change()
Application.Run ComboBox1.Text
End Sub

一般模組區:
Sub AMP_100()
Range("A1:A1619").EntireRow.Hidden = False
End Sub

Sub Pre_Qual()
Range("A1:A1619").EntireRow.Hidden = False
Range("A7:A1377,A1404:A1619").EntireRow.Hidden = True
End Sub

Sub GPU()
Range("A1:A1619").EntireRow.Hidden = True
Range("A7,A178,A216,A226,A228,A334,A378,A341,A487,A494,A531,A640,A647,A684,A793,A800," & _
       "A837,A946,A953,A990,A1033,A1040,A1080,A1132,A1139").EntireRow.Hidden = False
End Sub

Sub Class1()
Range("A7:A1619").EntireRow.Hidden = True
Range("A7,A226,A1185,A1193,A1378,A1404,A1425,A1432,A1454,A1472,A1492," & _
      "A1495,A1533,A1558").EntireRow.Hidden = False
End Sub
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 4# quickfixer


    謝謝前輩回覆我試試看
阿洋~~~

TOP

回復 5# 准提部林

   感謝前輩回覆我試試看
阿洋~~~

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題