Excel VBA运行时错误1004:应用程序定义或对象定义错误

Excel VBA运行时错误1004:应用程序定义或对象定义错误,vba,excel,runtime-error,Vba,Excel,Runtime Error,我在网上搜寻我的问题的答案。我正在编写一些代码,将公式输入到工作表上的某些单元格中,尽管在宏的前面有非常类似的代码,但这部分代码不适用于给出运行时错误1004:应用程序定义的错误或对象定义的错误 我曾尝试将代码移到新工作簿中,但问题没有解决,我就是不明白为什么它不能工作。 下面的代码是我定义正在使用的工作表的地方 Sub InputFormulae() Dim wksht As Worksheet Dim wksht1 As Worksheet Dim wksht2 As Worksheet

我在网上搜寻我的问题的答案。我正在编写一些代码,将公式输入到工作表上的某些单元格中,尽管在宏的前面有非常类似的代码,但这部分代码不适用于给出运行时错误1004:应用程序定义的错误或对象定义的错误

我曾尝试将代码移到新工作簿中,但问题没有解决,我就是不明白为什么它不能工作。 下面的代码是我定义正在使用的工作表的地方

Sub InputFormulae()

Dim wksht As Worksheet
Dim wksht1 As Worksheet
Dim wksht2 As Worksheet
Dim wksht3 As Worksheet
Dim wksht4 As Worksheet
Dim wksht5 As Worksheet

Set wksht = ThisWorkbook.Worksheets("Coils same day remove & insert")
Set wksht1 = ThisWorkbook.Worksheets("Implants same day remove&insert")
Set wksht2 = ThisWorkbook.Worksheets("Implant inserted NO Removal")
Set wksht3 = ThisWorkbook.Worksheets("Implant inserted AND removed")
Set wksht4 = ThisWorkbook.Worksheets("Coil inserted NO removal")
Set wksht5 = ThisWorkbook.Worksheets("Coil inserted AND removed")
下面的代码是正在工作的宏的一部分

wksht.Activate
With wksht
   i = Range("A" & Cells.Rows.Count).End(xlUp).Row

    Do Until i = 1
        If .Cells(i, 1) <> "" Then
        Cells(i, 9).Formula = "=IF(A" & i & "=A" & i + 1 & ",IF(C" & i & "=C" & i + 1 & ",(H" & i & "-C" & i & "),(F" & i + 1 & "-C" & i & ")),IF(A" & i & "=A" & i - 1 & ",IF(C" & i & "=C" & i - 1 & ",(H" & i & "-C" & i & "),(H" & i & "-C" & i & ")),(H" & i & "-C" & i & ")))"
        End If
        i = i - 1
    Loop
End With
wksht.Activate
与wksht
i=范围(“A”和Cells.Rows.Count).End(xlUp).Row
直到i=1为止
如果.Cells(i,1)“,则
单元格(i,9)。公式=“=IF(A”&i&“=A”&i+1&“、IF(C”&i&“=C”&i+1&“、(H”&i&“-C”&i&”、(F”&i+1&“-C”&i&“)、IF(A”&i&“=A”&i-1&“、IF(C”&i&“=C”&i-1&“、(H”&i&“&i&-C”&i&“)、(H”&i&“&i&“&C”&i&”&i&“)-C”&i&“&i&“)-C”&i&&i&“)
如果结束
i=i-1
环
以
下面的代码是不起作用的部分

wksht3.Activate
With wksht3
   i = Range("A" & Cells.Rows.Count).End(xlUp).Row

   Do Until i = 1
If .Cells(i, 1) <> "" And .Cells(i, 3) <> "" And .Cells(i, 6) <> "" Then
        Cells(i, 9).Formula = "=F" & i & "-C" & i & ")"
        Else: Cells(i, 9).Value = "0"
        End If
        i = i - 1
    Loop
End With
wksht3.Activate
带wksht3
i=范围(“A”和Cells.Rows.Count).End(xlUp).Row
直到i=1为止
如果.Cells(i,1)”和.Cells(i,3)”以及.Cells(i,6)”,则
单元格(i,9)。公式=“=F”&i&“-C”&i&“)
其他:单元格(i,9)。Value=“0”
如果结束
i=i-1
环
以
当我调试代码时,它会突出显示单元格(I,9)。公式=“=F”&I&“-C”&I&”)行

谢谢你的时间

=F10-C10)

不是有效的公式,因此您会得到1004

您得到的错误是因为VBA不理解
“=F”&i&“-C”&i&“
。就字符串而言,最简单的调试方法是编写:

debug.print“=F”&i&“-C”&i&“”
在上面的一行,并查看立即窗口中的值

MsgBox“=F”&i&“-C”&i&“”
在上面的行中,并查看
MsgBox中的字符串

根据结果,您将知道如何继续

  • 首先在每个区域和单元格前面加一个句号,然后用。。。以…结束

  • 括号成对出现

  • 不要把实数变成看起来像数字的文本

    wksht3.Activate   '<~~ totally unnecessary to use a With ... End With
    With wksht3
        i = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
    
        Do Until i = 1
            If .Cells(i, 1) <> "" And .Cells(i, 3) <> "" And .Cells(i, 6) <> "" Then
               .Cells(i, 9).Formula = "=F" & i & "-C" & i
           Else
               .Cells(i, 9).Value = 0
           End If
           i = i - 1
        Loop
    End With
    

    wksht3.Activate'FWIW,您也可以让您的公式进行测试:

    With wksht3
       i = Range("A" & Cells.Rows.Count).End(xlUp).Row
       .Range("I1:I" & i).FormulaR1C1 = "=IF(OR(RC1="""",RC3="""",RC6=""""),0,RC6-RC3)"
    End With
    

    啊,就是这样。我错过了那件事,觉得自己像个白痴。谢谢