【发布时间】: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