【问题标题】:Newbie VBA: "Object required" error in "Sumif" command新手 VBA:“Sumif”命令中的“需要对象”错误
【发布时间】:2016-08-05 07:36:10
【问题描述】:

对 VBA 来说非常新。希望从 Excel 中做一个简单的 SumIF,但遇到 424 错误“需要对象”的问题。

我的简单代码如下:

Sub Example1()

Dim TestVar As Long
Set TestVar = Application.WorksheetFunction.SumIf( _
                Arg1:=Sheet1.Range("B2:B11"), _
                Arg2:="1", _
                Arg3:=Sheet1.Range("A2:A11"))

End Sub

希望有人能指出这里的错误。

最好的,

身份证

后续问题:

For i = 1 To 10

Range("G" & i + 1).Value = Application.WorksheetFunction.SumIfs( _
            Arg1:=Ark1.Range("A2:A11") And Ark1.Range("B2:B11"), _
            Arg2:=Range("A" & i + 1) And "a", _
            Arg3:=Ark1.Range("C2:C11"))

Next i

我收到以下错误消息:运行时错误 13. 类型不匹配

【问题讨论】:

  • 是您的 Set 语句引发的错误正确吗?
  • 没有先尝试过,并给出了同样的错误。应该提到这一点。

标签: vba object required


【解决方案1】:

Long 在 VBA 中被视为一种数据类型,因此您需要编写如下代码:

Sub Example1()

Dim TestVar As Long
TestVar = Application.WorksheetFunction.SumIf( _
                Arg1:=Sheet1.Range("B2:B11"), _
                Arg2:="1", _
                Arg3:=Sheet1.Range("A2:A11"))

End Sub

请注意,我删除了 Set

编辑!

这里的请求是一个示例,说明如何将其设置为解析 Arg2 值的方法。

Sub SumArea(ArgTwo As String, ArgTwo2 As String)
    Dim ToSum As Long
    ToSum = Application.WorksheetFunction.SumIf(Arg1:=Sheet1.Range("B2:B11"), Arg2:=ArgTwo AND ArgTwo2, Arg3:=Sheet1.Range("A2:A11"))
End Sub

Sub ThisMethodCallThem()

    SumArea ("1")

    SumArea ("2")


End Sub

【讨论】:

  • 谢谢。我现在意识到了这个问题。
  • 还有一件事,我会将其标记为已关闭(我当然会);你知道我如何在 Arg2 中添加一个额外的参数吗?也就是说,如果它必须在某个列上为 1,而在另一个列上为 2
  • 谢谢,非常感谢!
  • 嘿麦克博曼。部分地。我所希望的是有两种不同的论点。因此标准是相应的 B 列单元格应等于 1,相应的 A 列单元格应等于“a”(仅作为示例)。本质上对应于 SumIFS
  • @pkpkPPkafa 也许新的更新有效。我不确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多