VBA中按名称引用表列的Countif函数?

VBA中按名称引用表列的Countif函数?,vba,excel,Vba,Excel,我在尝试引用countif语句中的表列名时遇到as问题。我有一个带有多个列名的表TBL_Client1。我有三个切片器,可以选择缩小我的表到1行。我使用表中的第一列Visible来标识何时将表选择到一行。我目前正在一个按钮上使用此代码来触发另一个按钮可见性。它可以工作,但我的表是动态的,可以使用越来越多的行。如何引用表列名而不是a1:a1500 Private Sub CommandButton1_Click() Dim n As Integer n = Application.Workshee

我在尝试引用countif语句中的表列名时遇到as问题。我有一个带有多个列名的表
TBL_Client1
。我有三个切片器,可以选择缩小我的表到1行。我使用表中的第一列
Visible
来标识何时将表选择到一行。我目前正在一个按钮上使用此代码来触发另一个按钮可见性。它可以工作,但我的表是动态的,可以使用越来越多的行。如何引用表列名而不是
a1:a1500

Private Sub CommandButton1_Click()
Dim n As Integer
n = Application.WorksheetFunction.CountIf(Range("a1:a1500"), "1")
If (n) = 1 Then
Sheets("clientlist").CommandButton2.Visible = True
Else
Sheets("clientlist").CommandButton2.Visible = False
End If
我正在使用它使按钮可见
CommandButton2
CommandButton2
一旦可见,就会执行一个复制函数,该函数再次使我无法理解如何按名称引用表列,而不是引用行号。下面是我的下一个宏:

Sub update()
A = Worksheets("clientlist").Cells(Rows.Count, 4).End(xlUp).Row
For i = 5 To A
If Worksheets("clientlist").Cells(i, 1).Value = "1" Then
    Worksheets("clientlist").Cells(i, 2).Copy
    b = Worksheets("contactlog").Cells(Rows.Count, 2).End(xlUp).Row
    Worksheets("clientlist").Paste 
Destination:=Worksheets("contactlog").Cells(b + 1, 2)
    Worksheets("clientlist").Cells(i, 3).Copy
    Worksheets("contactlog").Cells(b + 1, 3).PasteSpecial 
Paste:=xlPasteValues
    Application.CutCopyMode = False
    Worksheets("clientlist").Cells(10, 11).Copy
    Worksheets("contactlog").Cells(b + 1, 4).PasteSpecial 
Paste:=xlPasteValues
    Application.CutCopyMode = False
    Worksheets("clientlist").Cells(i, 11).Copy
    Worksheets("clientlist").Paste 
Destination:=Worksheets("contactlog").Cells(b + 1, 7)
    Worksheets("clientlist").Cells(i, 12).Copy
    Worksheets("clientlist").Paste 
Destination:=Worksheets("contactlog").Cells(b + 1, 6)
    Worksheets("clientlist").Cells(i, 13).Copy
    Worksheets("clientlist").Paste 
Destination:=Worksheets("contactlog").Cells(b + 1, 5)
    Worksheets("clientlist").Cells(3, 11).Copy
    Worksheets("clientlist").Paste 
Destination:=Worksheets("contactlog").Cells(b + 1, 8)
    c = Worksheets("deals").Cells(Rows.Count, 2).End(xlUp).Row
    Worksheets("clientlist").Cells(10, 11).Copy
    Worksheets("deals").Cells(c + 1, 3).PasteSpecial Paste:=xlPasteValues
最后,我使用2个按钮和可见性只是因为我不知道如何让宏连续运行。我已经在网上搜索了大约两个星期了(特别是StackOverflow),我已经接近了,但只是没有我感觉到的那么有活力。最终,我希望在切片器上选择某个对象时,随时触发按钮的可见性。我已经尝试了更改和更新,但是由于表本身的实际信息没有更改,所以我尝试的代码没有起作用。我想复制/countif/paste引用表列名,而不是行号和列号。 谢谢你的阅读

使用
范围(“TBL_客户1[您的列名]”)


这应该可以解决问题。

当我使用这个结构时,我得到错误“1004”,对象的方法“Range”失败了私有子命令按钮1\u click()Dim n As Integer n=Application.WorksheetFunction.CountIf(Range(“tbl\u client1[visible]”),“1”)如果(n)=1,那么Sheets(“clientlist”).CommandButton2.Visible=True Else Sheets(“clientlist”).CommandButton2.Visible=False End If End如果End不介意我的表格拼写不正确。应该是“tbl_客户1”。谢谢你的帮助