首页 > 解决方案 > 应用程序或对象定义错误 运行时错误 1004

问题描述

我创建了以下代码来从 Excel 表中提取信息。但是我在 if 语句中遇到了一个错误。我什至尝试从模块甚至工作表级别执行代码。我已经阅读过这个问题,似乎选择工作表似乎是主要问题,但我也尝试过,但徒劳无功,我似乎找不到解决方案。如果有人可以帮助我,那就太好了。先感谢您。

Sub test()
Dim row As Double, col As Double, inc As Double
row = 2
col = 2
inc = 20
'Sheets("sche").Range("a1").Select
For row = 2 To 15
For col = 2 To 52
If (Cells(r, c).Font.Bold Or Left(Cells(r, c).Value, 2) = "BP") Then 'Error is happening here
       Sheets("sche").Cells(inc, 2).Value = Sheets("sche").Cells(r, c).Value
 inc = inc + 1
GoTo zone
Else: GoTo zone
End If
zone:
Next col
Next row
End sub

标签: vba

解决方案


您已将rowand声明col为变量,但在您的块中使用rand 。cIf...Then

为什么您应该Option Explicit在每个模块的顶部添加以防止拼写错误和使用未声明的变量的一个主要示例。

我已经调整了您的代码并进行了测试:

注意:我删除了Else条件,GoTo Zone因为它们在您的代码中是多余的(至少在您提供的示例中)。此外,虽然不是您的错误的原因,但不必将您的整个If...Then条件封装在括号中。

Sub test()
    Dim row As Double, col As Double, inc As Double
    row = 2
    col = 2
    inc = 20
    'Sheets("sche").Range("a1").Select
    For row = 2 To 15
        For col = 2 To 52
            If Cells(row, col).Font.Bold Or Left(Cells(row, col).Value, 2) = "BP" Then 'Error is happening here
                Sheets("sche").Cells(inc, 2).Value = Sheets("sche").Cells(row, col).Value
                inc = inc + 1
            End If
        Next col
    Next row
End Sub

我改变了这个:

            If Cells(r, c).Font.Bold Or Left(Cells(r, c).Value, 2) = "BP" Then 'Error is happening here
                Sheets("sche").Cells(inc, 2).Value = Sheets("sche").Cells(r, c).Value

对此:

            If Cells(row, col).Font.Bold Or Left(Cells(row, col).Value, 2) = "BP" Then 'Error is happening here
                Sheets("sche").Cells(inc, 2).Value = Sheets("sche").Cells(row, col).Value

此外,明确引用您的对象是一种很好的做法。

这是因为,例如,该属性的隐式引用Cells()是 Active Worksheet

在没有对象限定符的情况下使用此属性会返回一个 Range 对象,该对象表示活动工作表上的所有单元格。

这可能会导致意外结果,例如,如果您在运行代码时使用了与所需不同的工作表,或者用户在代码执行期间更改了工作表。

最好编写如下代码:

If Sheets("sche").Cells(row, col).Font.Bold Or Left(Sheets("sche").Cells(row, col).Value, 2) = "BP" Then

当对相同对象(如工作簿、工作表和/或范围等)进行多次引用时,该With语句可以方便地缩短编写的代码。您可以在文档中阅读有关它的信息


推荐阅读