VBA - sumif公式中的可变工作表名称

时间:2015-03-13 18:42:55

标签: excel vba excel-vba

我正在尝试在VBA中使用SUMIF公式,基于可能具有不同名称的工作表。
当我在ActiveSheet上时(可能会有所不同),我想从另一个工作簿 Template_test 添加另一个工作表模板并添加一个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

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

1 个答案:

答案 0 :(得分:1)

我在这里看到两个问题:

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

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

试试这个:

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

End Sub

注意:如果工作表名称中有空格,则需要在公式中的撇号中包围它,否则会导致错误。