【问题标题】:Excel VBA Run-time 424 and FIND command [duplicate]Excel VBA运行时424和FIND命令[重复]
【发布时间】:2015-06-28 09:28:45
【问题描述】:

这是我的第一篇文章,我对 VBA 编程还比较陌生。作为较大代码工作的一部分,我有一个简单的子例程。我正在尝试在一列中查找一串文本,激活该单元格,以便我可以使用与活动单元格(找到的文本)相同的行中的值(整数)(右侧的 8 和 9 列),然后使用那些新的计算中的整数。我在代码 set rngNt 行中收到 运行时错误 424:需要对象。我不明白我错过了什么。有什么建议么?它一定很简单。仅供参考,我的变量都定义在我程序的最顶层。

这可能更容易:

1) 在 A 列第 i 行中找到 zoinks1 或 zoinks 2。 Zoinks1 和 zoinks2 可能出现多次。然后找到第一个实例...

2) 在 A 列中从 A 列行 (i + 1) 开始向下搜索驴。驴也可能出现多次,但我只想下一行遇到驴。 Zoinks 总是在驴子之前,另一个 zoinks 总是在驴子之后(想想 A 到 C、D 到 G、H 到 M 行等)。

3) 激活包含驴的单元格(可能是不必要的步骤?)

4) 在计算中使用包含驴的行中的 H 列和 I 列值,在包含 zoinks 的行中使用 H 列,结果答案在 zoinks 行 M 列中。

5) 重复寻找 zoinks 然后找到驴子,直到到达第 500 行。

' Define variable for use across all macros
Dim i As Integer
Dim j As Integer
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim rngNt As Range

Sub Countpassage()
Set ws1 = ThisWorkbook.Sheets("Data Figures & Other")
ws1.Activate

For i = 3 To ws1.Range("A500").End(xlUp).Row
    If ws1.Cells(i, 1).Value = "Zoinks1" Or _
    ws1.Cells(i, 1).Value = "Zoinks2" Then
    Set rngNt = ws1.Range(Cells(i + 1, 1), Cells(500, 1)).Find(What:="donkey", LookIn:=xlValues, LookAt:=xlPart, _
            SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
        ws1.Cells(i, 13).Value = (Log((ActiveCell.Offset(0, 8) / ActiveCell.Offset(0, 9)) / ws1.Cells(i, 8)) / Log(2))
    End If
Next i
End Sub

编辑:我已经删除了两个位置的 .Activate 并且不再出现运行时 424。现在,我在这行代码中收到 Run-time error '13' Type Mismatch

ws1.Cells(i, 13).Value = (Log((ActiveCell.Offset(0, 8) / ActiveCell.Offset(0, 9)) / ws1.Cells(i, 8)) / Log(2))

我知道该等式适用于整数,因为我已经对其进行了测试,但它似乎不适用于 ActiveCell.Offset 包含项。一旦设置了 rngNt,我不确定如何在不使用偏移命令的情况下调用计算所需的单元格。

【问题讨论】:

  • 几乎肯定会失败,因为搜索词在搜索范围内不存在

标签: excel vba runtime-error


【解决方案1】:

当您像代码一样使用工作表对象和范围时,您不需要Activate 您的工作表或其他任何东西。

Activating 很慢。最好不惜一切代价避免它。

我没有方便的 VBA,但我认为 .Activate 不会返回任何内容(更不用说 Range),因此它不会将任何内容分配给 rngNg。如果您确实需要激活它,请作为单独的命令执行。

【讨论】:

  • MSDN 说 Variant,Debug.Print TypeName(Range("A1").Activate) 报告它是一个布尔值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多