2015-10-15 78 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