2015-11-12 79 views
1

我已經在自動過濾器上設置了關稅列表,這樣當選擇了特定的銷售渠道並且密碼正確時,它僅顯示該通道可用的資費。爲組合框創建.additem

我的問題是,我似乎無法弄清楚如何獲得命令按鈕也填充組合框。下面

.additem代碼保持返回

「Permission denied」 錯誤

Dim TLoc As Range 
Dim ws As Worksheet 
Set ws = Worksheets("Tariff Matrix") 
Set TLoc = Range("Tariffs") 

For Each TLoc In ws.Range("Tariffs") 
    With MobilePricing.Tariff1 
     .AddItem TLoc.Value 
    End With 
Next TLoc 

任何援助將不勝感激。

+0

愚蠢的問題,而是你正試圖做到這一點,一旦用戶窗體被加載?這個代碼放在哪裏?在嘗試添加新關稅之前,您是否清除了ComboBox? – R3uK

+0

打開工作簿時,用戶窗體立即使用多個組合框(每個銷售渠道爲1)初始化。當他們選擇銷售渠道時,一個單獨的用戶表單會出現密碼提示。當他們點擊「提交密碼」時,它會將銷售渠道上的名稱輸入「關稅表」頁面,然後過濾僅可用於該渠道的關稅。我想要的是提交命令按鈕不僅過濾,然後填充組合框只有可見的關稅(抵消我相信是唯一的方法)。另外我還沒有清除組合框。 –

+0

對於ws.Range(「Tariffs」)中的每個TLoc循環做了什麼?我假設工作簿中只有一個名爲「關稅」的範圍? – eirikdaude

回答

2

首先你需要檢查你的ComboBox的RowSource,如果它不是空的,清空它。

然後當你想只有可見的單元格(在autofiler後);你需要使用Range("Tariffs").SpecialCells(xlCellTypeVisible)

這裏是你修改代碼:

Dim TLoc As Range 
Dim ws As Worksheet 
Set ws = Worksheets("Tariff Matrix") 
Set TLoc = Range("Tariffs") 

For Each TLoc In ws.Range("Tariffs").SpecialCells(xlCellTypeVisible).Cells 
    With MobilePricing.Tariff1 
     .AddItem TLoc.Value 
    End With 
Next TLoc 

要循環在你的窗體控件,使用這樣的:

Dim Ctrl As Control 

For Each Ctrl In Me.Controls 
    If TypeName(Ctrl) <> "ComboBox" Then 
    Else 
     MsgBox Ctrl.Object.Name 
     'Your code for one combobox (everyone will be referenced as Ctrl) 
    End If 
Next Ctrl 
+1

這真是太好了非常感謝你......完美的工作。如果我想擴展這個並創建另一個變量,所以這個代碼適用於所有的組合框(共10個),那麼我將如何做到這一點。 –

+0

抱歉忘了提及所有組合框的標籤是相同的(關稅1,關稅2 ...關稅10)@ R3uK –

+0

看看編輯! ;) – R3uK