2014-07-22 73 views
0

我嘗試使用下面的SUMPRODUCT函數在我的宏:SUMPRODUCT Worksheetfunction生產 「運行時錯誤13」 類型不匹配

= SUMPRODUCT( - (LEN( '數據每週經典' B:B)> 1! )) - 1

數據表以及要搜索更改的列,所以我使用變量。

我的代碼:

Public commentsheet As Worksheet 
Public commentcolumn As String 
Public commentcell As String 
Public rownumber As Integer 

Private Sub Workbook_Open() 
Set commentsheet = ThisWorkbook.Sheets("Data Weekly Classic") 
commentcolumn = Application.WorksheetFunction.VLookup(Sheet4.Range("A2").Value, Sheet8.Range("P1:Q8"), 2, 0) 
rownumber = 2 
commentcell = commentcolumn & rownumber 
End Sub 

Sub broken() 
Dim commentstotalrange As String 
commentstotalrange = commentcolumn & ":" & commentcolumn 
Sheet4.Range("D13").Value = Application.WorksheetFunction.SumProduct(--(WorksheetFunction.Len(commentsheet.Range(commentstotalrange) > 1)) - 1) 
End Sub 

任何想法,爲什麼我得到一個錯誤13:類型不匹配這一行?:

Sheet4.Range("D13").Value = Application.WorksheetFunction.SumProduct(--(WorksheetFunction.Len(commentsheet.Range(commentstotalrange) > 1)) - 1) 

首先,我寫的是:

Sheet4.Range("D13").Value = Application.WorksheetFunction.SumProduct(--(Len(commentsheet.Range(commentstotalrange) > 1)) - 1) 

沒有「LEN」之前的工作表功能。它產生了同樣的錯誤。我在「LEN」之前添加了工作表功能,因爲我想,也許我必須告訴VBA LEN也是excel的LEN功能。雖然錯誤沒有改變。

+0

你可以嘗試使用'Evaluate'或'[...]'而不是'Application.WorksheetFunction'? –

回答

0

你可以使用:

Sheet4.Range("D13").Value = Application.WorksheetFunction.Countif(commentsheet.Range(commentstotalrange), "??*") - 1 

如果細胞包含文本。

+0

非常感謝,這是工作!所以我想我沒有做錯任何事,VBA在使用這個excel公式時遇到了麻煩。 – Mustika

+0

你不能像VBA那樣將數組傳遞給sumproduct - 你必須使用Evaluate並傳遞實際的公式字符串(只要它少於255個字符) – Rory

相關問題