2013-01-20 51 views
0

我正在使用Microsoft Excel和VBA。 我需要一個下拉驗證列表,這些列表取決於在之前單元格中完成的選擇以及4個後續選擇中的選擇。下拉列表基於命名範圍,但這些範圍是由數據透視表生成的。由於數據透視表的內容可能發生變化,因此命名範圍不再匹配。使用Visual Basic基於MS EXCEL上的數據透視表的下拉列表

有沒有一種方法來自動定義數據透視表中的範圍命名?

對於故障報告系統,我有一個可能的故障模式和原因的數據庫。對於每個報告的故障,都需要選擇相應的故障模式和原因。 數據庫將包含數百種可能的故障模式和原因,因此僅顯示屬於所選系統的故障模式和原因將會有所幫助。

我想這更容易當我告訴示例文件: www.maasgeesteranus.nl/files/Example Excel中輸入SDM代碼和failmodes.xlsm

樞軸表包含命名區域,這是人工投入,但這應該是通過宏例程,或者應該可以在選擇工作表中的列的驗證定義中調用這些數據透視表範圍。

+0

!哪種編程語言? – JeanValjean

+0

該應用程序在Excel中使用VBA – KarelMG

+0

沒有指定使用的編程語言,無法回答問題! – JeanValjean

回答

1

假設您目前的下降downbox是Sheet(1)和它正在由被命名爲rangeA,目前你只有項目高達"A6""A2:A10"範圍稀少,所以5個項目,

Dim LastRow as Long 
Dim StartRow as Long 

'--assume that your named range first row has no titles 
StartRow = Sheets(1).Range("rangeA").Row '-- 2 
LastRow = Sheets(1).Cells(Sheets(1).Rows.Count, _ 
      Sheets(1).Range("rangeA").Column).End(xlUp).Row '-- 6 

If StartRow <> 1 then 
StartRow = StartRow - 1 
Lastrow = LastRow - StartRow 
End if 

ComboBox1.List = Sheets(1).Range("rangeA").Resize(LastRow).Value 
+0

對於故障報告系統,我有一個可能的故障模式和原因數據庫。對於每個報告的故障,都需要選擇相應的故障模式和原因。 數據庫將包含數百種可能的故障模式和原因,因此僅顯示屬於所選系統的故障模式和原因將會有所幫助。 – KarelMG