【问题标题】:Run-time error '1004' using a formula in a macro vba在宏 vba 中使用公式的运行时错误“1004”
【发布时间】:2015-02-24 04:00:32
【问题描述】:

我正在尝试在宏 vba 中插入公式并将输出写入单元格,但出现运行时错误。我不是 vba 开发人员,所以我不明白出了什么问题。我只写了一些简单的宏。这是我到目前为止写的:

Sub count()

  Range("E6").Formula = "=SUM(IF(FREQUENCY(MATCH(A2:A96;A2:A96;0);MATCH(A2:A96;A2:A96;0))>0;1))"

End Sub

我希望在E6 单元格中得到输出,只使用我得到 51 的公式,但是当我运行宏时我得到错误。有帮助吗?谢谢

编辑:使用输入框

 Dim myRange As Range

    Set myRange = Application.InputBox(Prompt:= _
        "Select a Range", _
        Title:="InputBox Method", Type:=8)

    Range("E6").Formula = "=SUM(IF(FREQUENCY(MATCH(A2:A96,A2:A96,0),MATCH(A2:A96,A2:A96,0))>0,1))"

【问题讨论】:

  • ,逗号替换;分号。即使您的默认 sep 是 ;,在 VBA 中也是 ,

标签: vba excel


【解决方案1】:

你应该使用美式分隔符:

  Range("E6").Formula = "=SUM(IF(FREQUENCY(MATCH(A2:A96,A2:A96,0),MATCH(A2:A96,A2:A96,0))>0,1))"

【讨论】:

    【解决方案2】:

    正如评论,这应该可以工作:

    Range("E6").Formula = _
        "=SUM(IF(FREQUENCY(MATCH(A2:A96,A2:A96,0),MATCH(A2:A96,A2:A96,0))>0,1))"
    

    【讨论】:

    • 这两个答案,你的和@Roby 的答案都很顺利。两者都有效,谢谢。是否可以通过带有edittext的对话框将范围设为变量?我的意思是范围:两个匹配的A2:A96
    • 好吧,他还在回答中将; 更改为,,所以它当然会起作用。即使是普通公式也可以作为数组公式输入。尝试使用他的答案,但使用;?顺便说一句,是的。试试Application.InputBox
    • 你能看到我的编辑吗?我尝试为我的范围插入 InputBox.. 但我认为我必须在我的公式中插入值而不是 A2:A96,A2:A96 对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多