2014-04-01 23 views
3

我試圖在vba中編寫此forumla。使用mmult時VBA中的類型不匹配錯誤

=MMULT(TRANSPOSE(F124:F370-L124),G124:G370-L125)/246 

在VBA代碼。我寫這個樣子的:

Sheets("1.A").Cells(124, 14) = Application.WorksheetFunction.MMult(Application.WorksheetFunction.Transpose(Worksheets("1.A").Range("F" & matchStartRow & ":F" & matchEndRow) - Cells(124, 12)), Worksheets("1.A").Range("G" & matchStartRow & ":G" & matchEndRow) - Cells(125, 12))/(matchEndRow - matchStartRow) 

但它給我一個類型不匹配錯誤。不知道它是從哪裏

+0

一個問題是,你完全qualifing的範圍'工作表(「1.A」)。範圍(「F」&matchStartRow&「:F」&matchEndRow)'而不是單元格,即'Cells(124,12)'而不是'Sheets(「1.A」)細胞(124,11)' – brettdj

回答

5

來這是非常容易使用EVALUATE直接作爲

Sheets("1.A").Cells(124, 14) = Evaluate("=MMULT(TRANSPOSE(F124:F370-L124),G124:G370-L125)/246") 

或與您的變量,你必須

Dim strEval As String 
matchStartRow = 124 
matchEndRow = 370 
strEval = "=MMULT(TRANSPOSE(F" & matchStartRow & ":F" & matchEndRow & "-L124),G" & matchStartRow & ":G" & matchEndRow & "-L125)/(" & matchEndRow & " - " & matchStartRow & ")" 
Sheets("1.A").Cells(124, 14) = Evaluate(strEval) 
+0

+ 1是的。第三種選擇是使用'Sheets(「1.A」)中的變量。單元格(124,14).Formula'。 –

+0

但沒有回答爲什麼有一個不匹配的錯誤..雖然它的工作原理,想知道爲什麼有一個不匹配的錯誤。 – lakesh

+0

很高興看到你得到它的工作。我對你現有的代碼做了一個評論 - 如果你想深入瞭解這個問題的底部,我會進一步挖掘。 – brettdj