我的项目有一点“错误1004”,我找不到“正确”纠正错误的方法。
使用此代码时出错:
If Total_account = "OUI" Or (Total_account = "NON" And Range(Cfin).Row = "2") Then GoTo fin
当满足第一个条件时,我收到错误:
If Total_account = "OUI"
当我有Total_account =“NON”和Range(Cfin).Row = 2时,没有错误。
我找到的唯一修复方法是这样做,但看起来并不好:
If Total_account = "OUI" Then GoTo fin
If (Total_account = "NON" And Range(Cfin).Row = "2") Then GoTo fin
我还阅读了Microsoft对此错误的支持,但我没有得到它:https://support.microsoft.com/fr-fr/help/963259/runtime-error-1004-method-range-of-object-global-failed
你能帮我理解/找到解决这个问题的方法吗? 错误截图附在我的帖子上。
提前致谢!
让
答案 0 :(得分:0)
将此代码放在新工作簿的标准模块中。无论您对Total_account
有什么价值,我保证不会导致错误。
Sub foo()
Dim Total_account as String
Dim CFin as String
CFin = "$C$2"
Total_account = "OUI"
If Total_account = "OUI" Or (Total_account = "NON" And Range(CFin).Row = "2") Then GoTo fin
fin:
End Sub
这表明代码中的其他地方存在问题。从1004消息判断,如果错误引发了布尔表达式,这只能是因为CFin
未分配(空字符串,空/零数值)。
如果CFin
在运行时的值为零或空,那么Range(cfin)
将引发1004错误,因为Range("").Row
无效。
答案 1 :(得分:0)
放置workSheet.Range(Cfin)总是好的.Row而不是Range(Cfin)。如果您的代码可能在Sheet1后面,所以当您将焦点更改为Sheet2时,无法找到对象问题。< / p>
请尝试以下代码。
Sub your_sub
Dim workSheet As Worksheet
Set workSheet = ActiveWorkbook.Sheets("Sheet1") 'guessing your looking at Sheet1
Dim Cfin As String
Cfin = "$C$2"
If Total_account = "OUI" Or (Total_account = "NON" And workSheet.(Cfin).Row = "2") Then GoTo fin
MsgBox "no" 'your code
fin:
MsgBox "yes" ' your code
End Sub