使用范围粘贴字符串时如何清除运行时错误“ 1004”错误

时间:2019-05-13 10:22:26

标签: excel vba

因此,由于这段代码没有太多内容,因此可能不会很长。基本上,我正在创建一个代码,该代码将根据条件将字符串(看起来像countifs公式)打印到单元格中。

在第一种情况下,所有方法都可以正常工作,但是当我进入else语句时,我得到

  

运行时错误“ 1004”:应用程序定义的r对象定义的错误。

Sub SetCriteria()

If Sheet1.Range("E3").Value = 1 Then
Sheet8.Range("F3") = "=COUNTIFS(Tank!G6:Tank!G1000,Dashboard!C6"
Else: Sheet8.Range("F3") = "=COUNTIFS(Tank!G6:Tank!G1000,""*"""

End If


End Sub

我要给单元格F3填充两个文本中的任何一个,具体取决于工作表E3单元格E3中的内容。

2 个答案:

答案 0 :(得分:0)

在我看来,您的代码中缺少“括号结尾”。试试:

Sub SetCriteria()

If Sheet1.Range("E3").Value = 1 Then
Sheet8.Range("F3") = "=COUNTIFS(Tank!G6:Tank!G1000,Dashboard!C6" & ")"
Else: Sheet8.Range("F3") = "=COUNTIFS(Tank!G6:Tank!G1000,""*""" & ")"

End If


End Sub

答案 1 :(得分:0)

  1. 您的公式最后都缺少右括号& ")"
  2. 您应该使用Range.Formula来设置公式。
  3. 您应按如下所示更正If … Else … End If语法。
  4. 您不应在一个范围内重复工作表名称Tank!。例如,Tank!G6:Tank!G1000应该为Tank!G6:G1000

最后,您的代码应如下所示:

Sub SetCriteria()
    If Sheet1.Range("E3").Value = 1 Then
        Sheet8.Range("F3").Formula = "=COUNTIFS(Tank!G6:G1000,Dashboard!C6" & ")"
    Else
        Sheet8.Range("F3").Formula = "=COUNTIFS(Tank!G6:G1000,""*""" & ")"
    End If
End Sub

如果要将公式粘贴为文本,请使用以下内容:

Sub SetCriteria()
    If Sheet1.Range("E3").Value = 1 Then
        Sheet8.Range("F3").Value = "'=COUNTIFS(Tank!G6:G1000,Dashboard!C6" & ")"
    Else
        Sheet8.Range("F3").Value = "'=COUNTIFS(Tank!G6:G1000,""*""" & ")"
    End If
End Sub

请注意,公式现在必须以'开头,才能告诉Excel它是字符串而不是公式。不用担心,Excel稍后不会显示'