Excel VBA автоматически копирует строку на новый лист
У меня есть исходный лист1 с именем (Sales), который содержит данные по каждой строке (один по высоте).
Sheet1 содержит именованный диапазон (ItemName (A2:A100)), который будет обновлять свои данные из веб-API каждые 10 минут в одну и ту же строку. Макет ниже столбцов листа 1
A B C D E 1 ItemName Sale date Cost Sold %Gain 2 Item1 1/1/2017 .50 1.00 100% 3 Item2 1/2/2017 .50 1.00 100% 4 Item3 1/1/2017 .50 1.00 100% ETC.
У меня уже есть целевые листы, созданные/названные (ItemName1,2,3,4) на основе столбца A (именованный диапазон) "ItemName" из исходного листа.
Я пытаюсь обновить целевой лист данными исходного листа для каждого элемента после обновления исходного листа каждые 10 минут. когда исходный лист обновляется из веб-API, данные обновляются в той же строке элемента. это означает, что на исходном листе не создаются новые строки.
я хочу обновить информацию о целевом листе в следующей пустой строке.
Проблема ниже заключается в том, когда (Set copyRow = wsSource.Range(namesArr(i, 1)).EntireRow) при попытке копирования я получаю "ошибку, определяемую приложением или объектом."
Заранее благодарю за помощь.
Что я уже пробовал:
Private Sub myProc() Dim wb As Workbook Dim wsSource As Worksheet Dim wsNames As Worksheet Set wb = ThisWorkbook Set wsSource = wb.Worksheets("Sales") Set wsNames = wb.Worksheets("Names") Dim namesArr() namesArr = wsNames.Range("A2:A" & wsNames.Cells(wsNames.Rows.Count, "A").End(xlUp).Row).Value Dim i As Long Dim currLastRow As Long Application.ScreenUpdating = False Dim copyRow As Range For i = LBound(namesArr, 1) To UBound(namesArr, 1) With wb.Worksheets(namesArr(i, 1)) Set copyRow = wsSource.Range(namesArr(i, 1)).EntireRow currLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row .Rows(currLastRow + 1).Value = copyRow.Value2 End With Next i Application.ScreenUpdating = True End Sub
Richard MacCutchan
Используйте функцию отладки Excel, чтобы узнать, каковы значения всех переменных и какая из них вызывает проблему - скорее всего, какое-то значение используется для построения Range(namesArr(i, 1))
.