VBA错误1004 - 运行时

时间:2017-03-29 12:26:46

标签: excel vba excel-vba excel-formula

我的项目有一点“错误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

你能帮我理解/找到解决这个问题的方法吗? 错误截图附在我的帖子上。

提前致谢!

enter image description here

2 个答案:

答案 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