Excel VBA公式-1004对象或应用程序定义错误
我正在添加一个宏,允许用户更改单元格中的公式。 以下是添加到模块的代码:Excel VBA公式-1004对象或应用程序定义错误,vba,excel,Vba,Excel,我正在添加一个宏,允许用户更改单元格中的公式。 以下是添加到模块的代码: Sub OverrideCharge() title = "Override Total Labor Cost" 'Ask user if they want to override overrideMsg = MsgBox("Override Total Labor Cost with 4-Hour Minimum Charge?", vbYesNo, title) If overrideMsg = vbYes Th
Sub OverrideCharge()
title = "Override Total Labor Cost"
'Ask user if they want to override
overrideMsg = MsgBox("Override Total Labor Cost with 4-Hour Minimum Charge?", vbYesNo, title)
If overrideMsg = vbYes Then
Sheets("Totals").Activate
Range("L25").Formula = "=SUM(IF(MOD(ROW(INDIRECT(""L11:L""&ROW()-1)),2)=1,INDIRECT(""L11:L""&ROW()-1),0)))"
Else: overrideMsg = vbNo
Exit Sub
End If
End Sub
我在定义
范围(“L25”).公式时出错。我不知道这是语法错误还是我引用的工作表/单元格不正确。您需要对引号和括号进行排序,应该是:
Range("L25").Formula = "=SUM(IF(MOD(ROW(INDIRECT(""L11:L""&(ROW()-1))),2)=1,INDIRECT(""L11:L""&(ROW()-1)),0))"
在处理长而复杂的公式时,我喜欢添加一个FormulaString变量来帮助我调试(这样我可以更好地了解错误的来源)
此外,无需激活工作表(“总计”)
,然后将公式放入单元格L25中,您可以直接使用工作表(“总计”).Range(“L25”).formula进行操作
我自己的偏好是,我喜欢使用Chr(34)
,而不是开始计算我需要多少”
,或者”
代码
Sub OverrideCharge()
Dim FormStr As String
Title = "Override Total Labor Cost"
'Ask user if they want to override
overrideMsg = MsgBox("Override Total Labor Cost with 4-Hour Minimum Charge?", vbYesNo, Title)
If overrideMsg = vbYes Then
' use a String for Formula to help debug it (before trying to put it inside a cell)
FormStr = "=SUM(IF(MOD(ROW(INDIRECT(" & Chr(34) & "L11:L" & Chr(34) & "&ROW()-1)),2)=1,INDIRECT(" & Chr(34) & "L11:L" & Chr(34) & "&ROW()-1),0))"
Debug.Print FormStr '<-- for debug only
Sheets("Totals").Range("L25").Formula = FormStr
Else
overrideMsg = vbNo
Exit Sub
End If
End Sub
Sub-OverrideCharge()
Dim FormStr作为字符串
Title=“覆盖总人工成本”
'询问用户是否要覆盖
overrideMsg=MsgBox(“以4小时最低收费覆盖总人工成本?”,vbYesNo,标题)
如果覆盖EMSG=vbYes,则
'使用公式字符串帮助调试它(在尝试将其放入单元格之前)
FormStr=“=SUM(如果(MOD(行(间接)(&Chr(34)和“L11:L”&Chr(34)和“&ROW()-1)),2)=1,间接(&Chr(34)和“L11:L”&Chr(34)和“&ROW()-1),0))”
Debug.Print FormStr“手动将公式输入单元格时公式是否有效?请尝试使用Range(“L25”)。公式=“=SUM(如果(MOD(ROW(INDIRECT(L11:L&ROW()-1)),2)=1,INDIRECT(L11:L&ROW()-1),0))”
谢谢。原始公式作为实际的Excel公式工作,但我不知道它需要为VBA编辑一点。