2015-10-15 79 views
1

我無法評估代碼最後的產品。我覺得所有東西都正常,但我不斷收到評估產品

類型不匹配錯誤

我已經試過各種語法的變化,我仍然不能得到它的工作。有任何想法嗎?

Sub Sample() 
    Dim ws As Worksheet 
    Dim x As Long 
    Dim lRow As Long, llRow As Long 
    Dim aCell As Range, bCell As Range 
    Dim rng1 As Range, rng2 As Range 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    With ws 
     Set aCell = .Range("B6:E20").Find(Cells(14, 9).Offset(0, -1).Value) 
     If Not aCell Is Nothing Then 
      lRow = .Range(Split(.Cells(, aCell.Column).Address, "$")(1) & .Rows.Count).End(xlUp).Row 
      If lRow > 1 Then 
       Set rng1 = .Range(aCell.Offset(1), .Cells(lRow, aCell.Column)) 
      End If 
     End If 

     Set bCell = .Range("B6:E20").Find(Cells(14, 9).Offset(-1, 0).Value) 
     If Not bCell Is Nothing Then 
      llRow = .Range(Split(.Cells(, bCell.Column).Address, "$")(1) & .Rows.Count).End(xlUp).Row 
      If llRow > 1 Then 
       Set rng2 = .Range(bCell.Offset(1), .Cells(lRow, bCell.Column)) 
      End If 
     End If 

     Debug.Print rng1.Address 
     Debug.Print rng2.Address 

     x = Evaluate("=sumproduct(""rng1"",""rng2"")") 
    End With 
End Sub 
+0

目前尚不清楚你正在努力完成什麼。 'set rng2 = ...'應該使用'llrow'而不是'lrow',我相信它應該是'... Find(.Cells(14,9)...'not'... Find(Cells( 14,9)...'同樣,fwiw,單元格在[SUMPRODUCT函數]範圍內(https://support.office.com/zh-cn/article/sumproduct-function-4e0bffa7-4291-4635-a61f所有的行都應該有相同的行數 – Jeeped

回答

1

rng1rng2,因爲它不是一個Named Range或有效範圍的地址並不意味着什麼Sumproduct功能。因此Evaluate功能失敗。

要使其工作的嘗試:

x = Evaluate("=sumproduct(" & rng1.Address & "," & rng2.Address & ")") 

我們確保您評估您的正確的範圍,你可能想地址財產外部參數設置爲

x = Evaluate("=Sumproduct(" & rng1.Address(, , , True) & _ 
    "," & rng2.Address(, , , True) & ")") 
+1

或者使用:'x = ws.Evaluate(「sumproduct(」&rng1.Address&「,」&rng2.Address&「)」) – Rory

+0

完美。非常感謝你!我試過rng1.address,但是我沒有&符號,你能解釋它爲什麼放在那裏嗎? – Alexv

+1

@Alexv [使用** Evaluate **的優點是參數是一個字符串,所以你可以在代碼中構造字符串或使用Visual Basic變量。](https://msdn.microsoft.com/en-us/library/office/ff193019.aspx)這裏的對象是'串'在一起固定的文本和變量,其中'&作爲連接運算符。 – pnuts