2015-03-13 74 views
0

我試圖在VBA中使用SUMIF公式,該公式基於可以具有不同名稱的工作表。
當我在這個ActiveSheet(可能有所不同),我想從另一個工作簿Template_test再添片模板並投入了SUMIF公式引用到activesheet。
當我運行宏時,發生錯誤(1004)並停止在公式。VBA - 以sumif公式爲單位的變量表名稱

這是我有:

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

在這裏我看到兩個問題:

我)wksheet的類型是「工作表」,而不是一個字符串的對象,所以你不能把它作爲一個字符串。

ii)wksheet在代碼中可用,但不在工作表中,所以當您將函數粘貼到單元格中時,需要退出該字符串並追加名稱。

試試這個:

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

End Sub 

注:如果工作表名稱中有空格,則需要將其包圍在撇號公式中否則會導致錯誤。

+0

嗨,嘗試過這種變化。得到了同樣的錯誤。試圖改變「和&的位置,並總是得到相同的錯誤 – sekiumo 2015-03-16 17:12:18

+0

嘗試設置公式等於一個變量所以,testvar =」「= SUMIF(」&wksheet.name&「!C2,=」「P- SEC「,」&wksheet.name&「!C16)」,然後debug.print該變量並手動將該值放入單元格中以查看會發生什麼。 – OpiesDad 2015-03-16 17:53:06

+0

對不起,但不知道debug.print是如何工作的。 – sekiumo 2015-03-18 10:56:56