Vba 为什么我要挂断这行使用SumProduct的代码?

Vba 为什么我要挂断这行使用SumProduct的代码?,vba,excel,Vba,Excel,由于某种原因,这段代码挂起在“rng3.Value…”行上。请帮忙 Set rng4 = ActiveSheet.Columns("D").Find(strFind, , xlValues, xlWhole) rng4.Select Set lastCell2 = ActiveSheet.Cells(ActiveSheet.Rows.Count, (4)).End(xlUp) lastCell2.Select Set rng5 = Range(rng4, last

由于某种原因,这段代码挂起在“rng3.Value…”行上。请帮忙

Set rng4 = ActiveSheet.Columns("D").Find(strFind, , xlValues, xlWhole)
    rng4.Select
    Set lastCell2 = ActiveSheet.Cells(ActiveSheet.Rows.Count, (4)).End(xlUp)
    lastCell2.Select
    Set rng5 = Range(rng4, lastCell2)
    rng5.Select
    Set rng5 = rng5.Offset(0, 0).Resize(rng5.Rows.Count - 1)
    rng5.Select
For i = 0 To 29
    Worksheets("Resource Plan").Select
    Set rng1 = ActiveSheet.Columns("J").Find(strFind, , xlValues, xlWhole)
    rng1.Select
    Set lastCell = ActiveSheet.Cells(ActiveSheet.Rows.Count, (10)).End(xlUp)
    lastCell.Select
    Set rng2 = Range(rng1, lastCell)
    Set rng2 = rng2.Offset(4, i).Resize(rng2.Rows.Count - 5, rng2.Columns.Count)
    rng2.Select
    Set rng3 = Sheets("Results").Cells(18, (i + 7))
    'rng3.Value = Worksheets("Resource Plan").Evaluate("Sum(," & rng2.Address(0, 0) & ")")
    rng3.Value = WorksheetFunction.SumProduct("rng5", "rng3")
    Worksheets("Results").Select
Next i

它们是变量,没有引号。同时调整rng5以降下收割台。然后将其读入数组。当前您正在使用一个范围,sumproduct需要一个数组

Set rng5 = rng5.Offset(1, 0).Resize(rng5.Rows.Count - 1)
For Each cell In rng5
    i = i + 1
    aRng5(i) = cell.Value
Next cell

rng3.Value = WorksheetFunction.SumProduct(rng5, rng3)

目前的主要问题似乎是数组在维度上不匹配。不能将单个单元格与数组相乘。如果您想将每个单元格乘以一个值,然后将它们相加,则可能会在rng5中循环。在这种情况下,您不需要将其读入数组,但仍可以将其用于下一个格式循环、乘法,然后将结果添加到变量中。如果第二个范围的大小应该匹配,那么您也需要将其用于该范围上的下一个循环逻辑。

它们是变量,没有引号。同时调整rng5以降下收割台。然后将其读入数组。当前您正在使用一个范围,sumproduct需要一个数组

Set rng5 = rng5.Offset(1, 0).Resize(rng5.Rows.Count - 1)
For Each cell In rng5
    i = i + 1
    aRng5(i) = cell.Value
Next cell

rng3.Value = WorksheetFunction.SumProduct(rng5, rng3)

目前的主要问题似乎是数组在维度上不匹配。不能将单个单元格与数组相乘。如果您想将每个单元格乘以一个值,然后将它们相加,则可能会在rng5中循环。在这种情况下,您不需要将其读入数组,但仍可以将其用于下一个格式循环、乘法,然后将结果添加到变量中。如果第二个范围的大小应该匹配,那么您也需要在该范围上的下一个循环逻辑中使用相同的值。

仍然无法使用。错误现在显示为“无法获取WorksheetFunction类的SumProduct属性”这是否意味着您不能在VBA中使用SumProduct?如果这样做不起作用,请逐行检查,当您到达该行时,请检查rng5和rng3的数据类型。你应该能够很好地使用这个函数。当您传递错误的数据类型时,经常会出现这种错误。rng3和rng5都被标注为范围。实际上,我想我找到了它。您选择的范围错误。如果您单步执行,并且每次执行.select时,请查看工作表,当您到达for语句前的行时,您会在列中倒数第二个单元格中选择找到的字符串。我想你想去掉顶部的字符串而不是底部的数字?哦,消息交叉了。。。sumproduct接受数组相乘,而不是范围相乘。如果您声明一个数组并用数字填充它,然后再过一秒钟,您就可以很好地使用它们进行sumproduct。通常,您只需声明数组并使其等于范围,但这会给您一个2d数组,sumproduct似乎不喜欢2d数组。我认为您必须使用设置的范围来填充它。我看看能不能给你一个适合你的片段,还是不行。错误现在显示为“无法获取WorksheetFunction类的SumProduct属性”这是否意味着您不能在VBA中使用SumProduct?如果这样做不起作用,请逐行检查,当您到达该行时,请检查rng5和rng3的数据类型。你应该能够很好地使用这个函数。当您传递错误的数据类型时,经常会出现这种错误。rng3和rng5都被标注为范围。实际上,我想我找到了它。您选择的范围错误。如果您单步执行,并且每次执行.select时,请查看工作表,当您到达for语句前的行时,您会在列中倒数第二个单元格中选择找到的字符串。我想你想去掉顶部的字符串而不是底部的数字?哦,消息交叉了。。。sumproduct接受数组相乘,而不是范围相乘。如果您声明一个数组并用数字填充它,然后再过一秒钟,您就可以很好地使用它们进行sumproduct。通常,您只需声明数组并使其等于范围,但这会给您一个2d数组,sumproduct似乎不喜欢2d数组。我认为您必须使用设置的范围来填充它。我看看能不能给你一个适合你的片段。