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

时间:2018-04-18 20:36:25

标签: excel vba excel-vba

我在尝试引用countif语句中的表列名时遇到了问题。我有一个包含多个列名的表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

我使用它来显示按钮CommandButton2CommandButton2一旦可见执行复制功能再一次,我无法弄清楚如何通过名称引用表列而不是引用行号。以下是我的下一个宏:

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)搜索了大约2个星期,而且我已经接近了,但是并不像我想象的那样动态。最终,我希望在切片机上选择某些东西时,可以触发按钮的可见性。我已经尝试过更改和更新,但由于表格本身的实际信息并没有改变代码我已经尝试过没有用过。我想复制/标识/粘贴引用表列名而不是行号和列号。 谢谢阅读!

1 个答案:

答案 0 :(得分:1)

使用Range("TBL_Client1[your-column-name]")

这应该可以解决问题。