2011-05-04 39 views
0

好吧,我是一個完全VBA noob,所以請原諒我糟糕的代碼。嘗試使用VBA-excel在另一個工作區中基於單擊值篩選一個工作表

我有兩個excel工作表,一個名爲「承包商」,一個名爲「Refer_to_Contractors」。

承包商表的佈局如此。

TERR ContractorID第一最後
1 7鮑勃史密斯
2 5傑夫布朗
3 8 Stan李

的Referring_to_Contractors片具有相同的字段和佈局與上述承包商片,而且還具有附加列對於引薦承包商,所以它有標題爲「Ref_Contractor_Id」,「Ref_First」,「Ref_Last」等的列。

我想要做的是使用VBA,這樣當有人雙擊「承包商」表格中,它將採用Con中的值tractor_ID列,然後查看「Refer_to_Contractors」工作表並按該工作表中所有具有該值作爲Contractor_ID的記錄進行過濾。實質上,這將顯示在第一張紙上點擊的Contractor_ID的推介信息。我創建了名爲 「PrimaryContractor」

因此,第一片 '承包商' 的Contractor_ID領域的命名範圍,我有:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

End Sub 

和..

Sub Select_Ref_Contractors() 

    ContractorId = Range("PrimaryContractor").Value 

    With Sheets("Referring_to_Contractors") 
     .Visible = True 
     .Select 
    End With 

    ActiveSheet.Range("$B$10:$N$44163).AutoFilter Field: =1, Criteria1:= ContractorID 

    Application.Goto Range("A1"), True 

End Sub 

從概念上講,這似乎像它應該很簡單,但由於某種原因,我不能讓第二張紙正確過濾。

任何幫助,甚至有用的鏈接將不勝感激。

回答

1

我剛纔在Excel 2007中被撞這件事,它似乎工作

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
Dim id As String 

If Not Target.Cells.Count > 1 Then 
    id = CStr(Selection) 

    Sheet2.Activate 
    Sheet2.Range("A1", "c4").AutoFilter 1, id 
End If 
End Sub 

它是利用在兩個片同一張桌子下面,當你雙擊工作表Sheet1中,BeforeDoubleClick事件觸發細胞並將其應用到Sheet2上。

ID ID2 Text 
1 2 a 
2 2 b 
3 3 c 
+0

如果您選擇多個單元格,它確實存在缺陷(又名錯誤),但有點檢查應該修復 – 2011-05-04 20:58:45

相關問題