我正在尝试在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
有没有办法解决这个问题并让它发挥作用?
答案 0 :(得分:1)
我在这里看到两个问题:
i)wksheet是“WorkSheet”类型的对象而不是字符串,因此您不能将其用作字符串。
ii)wksheet在代码中可用,但不在工作表中,因此当您将函数粘贴到单元格中时,需要退出字符串并附加名称。
试试这个:
ActiveCell.FormulaR1C1 = _
"=SUMIF('" & wksheet.name & "'!C2,""=P-SEC""," & wksheet.name & "!C16)"
End Sub
注意:如果工作表名称中有空格,则需要在公式中的撇号中包围它,否则会导致错误。