我有一个包含两个工作表的文件。我需要运行一个宏,它在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
答案 0 :(得分:0)
您的代码正在A1
中Sheet1
A1
与Sheet2
进行比较。我想您要将A1
中的Sheet1
与ColumnA
中的所有Sheet2
进行比较。因此,您需要一个外循环。
以下是您的代码,经过修改即可实现此目的。它还合并了Leviathan的评论,将Integer
更改为Long
,并将Exit Sub插入适当的位置。
当Sheet2看起来像这样......
我在Sheet1上得到了这个结果......
代码......
Sub dataChange()
Dim myRow As Long, srch As Integer
On Error GoTo Err_Execute
myRow = 1
srch = 1
Do While Sheet1.Cells(srch, 1).VALUE <> ""
Do While Sheet2.Cells(myRow, 1).VALUE <> ""
If Sheet1.Cells(srch, 1).VALUE = Sheet2.Cells(myRow, 1).VALUE Then
Sheet1.Range("AP" & srch).VALUE = "HOUSTON"
Exit Do
End If
myRow = myRow + 1
Loop
myRow = 1
srch = srch + 1
Loop
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub