【问题标题】:Countif function in VBA that refers to a table column by name?VBA中的Countif函数按名称引用表列?
【发布时间】:2018-04-19 16:21:37
【问题描述】:

我在尝试在 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 周了,我已经接近了,但并不像我认为的那样动态。最终,我希望在切片器上选择某些内容时触发按钮的可见性。我已经尝试过更改和更新,但由于表本身的实际信息没有改变我尝试过的代码并没有奏效。我想复制/计数/粘贴引用表列名而不是行号和列号。 谢谢阅读!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    这应该可以解决问题。

    【讨论】:

    • 当我使用这个结构时,我得到错误'1004',对象'_Worksheet'的方法'范围'失败
    • Private Sub commandbutton1_click() Dim n As Integer n = Application.WorksheetFunction.CountIf(Range("tbl_client1[visible]"), "1") If (n) = 1 Then Sheets("clientlist ").CommandButton2.Visible = True Else Sheets("clientlist").CommandButton2.Visible = False End If End Sub
    • 没关系,我的表格拼写不正确。它应该是“tbl_clients1”。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多