2011-05-04 85 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

相关问题