Hello StackOverflow сообщества,MS Excel VBA - Перебор столбцов и строк
Я должен признаться, что я прежде всего кода в MS Access и имеют очень ограниченный опыт MS Excel VBA.
Моя текущая цель: у меня есть «Отчет о расходах», который отправляется мне с выводами, этот отчет содержит много столбцов с разными именами учетных записей, которые могут быть заполнены или могут быть пустыми.
Мой первый шаг - начать с первой записи (строка 14; колонка АК содержит личную информацию об удержании), затем перейти к первой учетной записи вычета (счета вычитания начинаются с столбца L и пробега до столбца DG), если проверка каждая ячейка равна NULL, если она затем продолжает двигаться вправо. Если есть значение, мне нужно скопировать его во внешнюю книгу «Шаблон расчета», начиная со строки 2 (колонка J для самого вывода), а также копировать некоторую личную информацию из исходной строки в «Отчет о расходах», относящуюся к этому вычету (currRow: столбец C, E, F из «отчета о расходах» в «Таблицы расчета заработной платы», столбцы B, C, D).
Затем перейдите вправо, пока следующая ячейка не будет содержать значение, и повторите этот процесс в новой строке в шаблоне расчета заработной платы. После того, как был выполнен последний столбец (DG), я хочу перейти к следующей строке (строка 15) и снова запустить процесс до «LastRow» в моем «Used Range».
Я очень благодарен за любые отзывы, объяснения или ссылки, которые могут указывать на мою цель. Заранее благодарю за то, что вы нашли время, чтобы прочитать это!
Текущее состояние кода:
`< Sub LoadIntoPayrollTemplate()
Dim rng As Range
Dim currRow As Integer
Dim UsedRng As Range
Dim LastRow As Long
Set UsedRng = ActiveSheet.UsedRange
currRow = 14
Set wb = ActiveWorkbook '"Expense Report"
Set wb2 = MyFilepath '"Payroll Template"
'Copied from another procedure, trying to use as reference
LastRow = rng(rng.Cells.Count).Row
Range("A14").Select
Do Until ActiveCell.Row = LastRow + 1
If (ActiveCell.Value) <> prev Then
currRow = currRow + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
With Worksheets("Collections")
lstRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range(.Cells(14, 12), Cells(lstRow, 111))
End With
End Sub>`
работал отлично! Большое спасибо – Ace16150s