【发布时间】:2016-05-04 20:59:06
【问题描述】:
我有一个包含两个工作表的文件。我需要运行一个宏,它向下看 sheet2 上的 A 列,直到它为空白。它需要从 sheet1 的 sheet2 列 A 中的单元格中查找值。如果找到,则更改 AP 列的值。如果未找到,则跳到下一个搜索下一个值。
这是我目前所拥有的。我已经能够将其修复到不再出现错误但也没有结果的地方。它显示并且似乎正在运行,但未对 sheet1 上的单元格(“AP”,“找到的行值”)进行任何更改。
Sub dataChange()
Dim myRow As Integer
Dim srch As Integer
On Error GoTo Err_Execute
myRow = 1
srch = 1
While Sheet2.Cells(myRow, 1).Value <> ""
If Sheet1.Range("A" & CStr(srch)).Value = Sheet2.Cells(myRow, 1).Value Then
Sheet1.Range("AP" & CStr(srch)).Value = "HOUSTON"
End If
srch = srch + 1
myRow = myRow + 1
Wend
Err_Execute:
MsgBox "An error occurred."
End Sub
【问题讨论】:
-
行匹配吗?此外,使用
cells更容易(反正对我来说)。 -
我尝试了代码并且它有效。尽管在
Err_Execute:之前需要Exit Sub,因此即使一切正常执行,您也不会收到错误消息。您应该明确地将变量声明从Integer更改为Long。整数只能容纳最多 32767 的数字。使用它们遍历 1048576 行是个坏主意。那么,既然一切正常 - 究竟是什么问题? -
最好提供输入样本、预期输出以及您没有得到什么结果。我猜你需要一个嵌套循环 - srch 是外部循环,myRow 是内部循环。