【问题标题】:VBA - Variable sheet name in sumif formulaVBA - sumif 公式中的变量表名称
【发布时间】:2015-03-20 03:26:03
【问题描述】:

我正在尝试在 VBA 中使用 SUMIF 公式,基于可以具有不同名称的工作表。
当我在这个 ActiveSheet 上(可能会有所不同)时,我想从另一个工作簿 Template_test 添加另一个工作表 template 并将一个引用到活动表的 SUMIF 公式.
当我运行宏时,出现错误(1004)并停在公式处。

这就是我所拥有的:

Sub test()
    Set CurBook = ThisWorkbook
    Dim wksheet As Worksheet
    Set wksheet = ActiveSheet

    MsgBox CurBook.Name & "_" & wksheet.Name

'Open template
    Workbooks.Open filename:= _
        "D:\Template_test.xlsm"

'Copy new sheet
    Sheets("template").Select
    Sheets("template").Copy After:=CurBook.ActiveSheet

'Close Template file
    Windows("Template_test.xlsm").Activate
    ActiveWindow.Close

 'SUMIF Formula in Template regarding wksheet in CurBook
    Range("E11").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIF('& wksheet &!C2,""=P-SEC"",'& wksheet &!C16)" End Sub

有没有办法解决这个问题并让它发挥作用?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我在这里看到两个问题:

    i) wksheet 是 'WorkSheet' 类型的对象,而不是字符串,因此不能将其用作字符串。

    ii) wksheet 在代码中可用,但在工作表中不可用,因此在将函数粘贴到单元格时,需要退出字符串并附加名称。

    试试这个:

    ActiveCell.FormulaR1C1 = _
        "=SUMIF('" & wksheet.name & "'!C2,""=P-SEC""," & wksheet.name & "!C16)"
    
    End Sub
    

    注意:如果工作表名称中有空格,则需要在公式中用撇号将其括起来,否则会导致错误。

    【讨论】:

    • 您好,尝试了该更改。得到同样的错误。尝试更改 " 和 & 的位置并始终得到相同的错误。
    • 尝试将公式设置为等于变量,因此 testvar = ""=SUMIF(" & wksheet.name & "!C2,=""P-SEC""," & wksheet.name & "!C16)" 然后 debug.print 变量并手动将值放入单元格中以查看会发生什么。
    • 用您提供的 fiist 公式尝试了 Debug.Print,立即得到了 FALSE。试图把变量testvar,但它显示编译错误!在 C2 之前。
    • 一开始应该只有一个引号。我的错。试试 testvar = "=SUMIF(" & wksheet.name & "!C2,=""P-SEC""," & wksheet.name & "!C16)"
    • 试过了,在立即窗口中得到了相同的响应:False。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多