У меня есть файл, который имеет два листа. Мне нужно запустить макрос, который смотрит вниз на столбец A на листе2, пока он не будет пустым. Он должен искать значение из ячейки в столбце A листа 2 на листе1. Если найдено, измените значение столбца AP. Если не найден, перейдите к следующему поиску следующего значения.Excel VB Macro, чтобы найти значение из другого листа, затем изменить значение ячейки в текущем листе
Это то, что у меня есть до сих пор. Я смог зафиксировать его там, где я больше не получаю ошибок, но у него также нет результатов. Он отображается и, кажется, запускается, но никаких изменений в ячейке («AP», «найденное значение строки») на листе 1 не производится.
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
Соответствуют ли строки? Кроме того, проще использовать «клетки» (для меня все равно). – findwindow
Я пробовал код, и он работает. Хотя вам нужно 'Exit Sub' перед' Err_Execute: ', поэтому вы не получите сообщение об ошибке, даже если все выполнено просто отлично. И вы должны определенно изменить объявления переменных с 'Integer' на' Long'. Целые числа могут содержать только номера до 32767. Плохая идея использовать те, которые пересекают более 1048576 строк. Итак, поскольку все работает - в чем же проблема? – Leviathan
Лучше всего предоставить образец ввода, ожидаемый результат и какие результаты вы не получите. Я собираюсь угадать, что вам нужен вложенный цикл - srch - внешний, а myRow - внутренний. – OldUgly