2014-03-30 86 views
0

使用VBA不同的片材,以篩選表如果我有具有例如該值的數據表值:傳遞參數值在Excel

Table name = Employees

Column Names = Names, Titles

的值該列將包括

"SamT, Manager"

"Nock, Manager"

"John, Entry Level"

"Kris, HR"

所以如果我有一個SQL Server表上表兩個在我的Excel spreed表生成此表,如何創建一個參數,它會自動幫我過濾器此表通過在不同的工作表中輸入數值(一)。該參數可以是標題的下拉列表或只是一個取值的文本框。例如,我在工作表一中的參數下拉列表中選擇「經理」,在下一個具有「員工」表格列表的員工表中,只顯示具有經理職位的員工。如何在Excel中使用VBA來完成此操作?

感謝,

+0

您不一定需要VBA。看看MS Query。這裏有一個以Excel 2003爲中心的舊版本,但是Excel的Daily Dose主題是一個很棒的帖子:http://dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/ –

+0

謝謝道格。這很有幫助,但我更多地尋找一種編寫VBA代碼的方法,該代碼將具有鏈接的參數。原因是在VBA中修改代碼比在Excel中使用附加參數的更多請求時手動添加這些參數更容易。 – user3479326

+0

有不同的方法來做到這一點。一個好的方法是編寫ListObject的(Table's)QueryTable對象。你也可以在SQL Server端做些事情,並使用'CreateParameter'和'AppendParameter'。但是,這些都是大的學習經驗,你需要對它們進行一些研究。我仍然使用MS Query方法,只需編寫一些VBA來更改參數單元格中的值。 –

回答

0

嘗試這樣的事情,你可以展開if語句的更多的參數。

在Sheet1工作對象,你可以添加:

private sub Worksheet_Change(ByVal Target as Range) 

if target = Range("YourCell") then 
    Sheets("Sheet2").ListObjects("YOURTABLENAME").Range.AutoFilter Field:=NUMBEROFCORRESPONDING FIELD, Criteria1:="=" & Range("YourCell").value 
end if 

end sub 

我沒有測試此所以希望有沒有錯別字。