VBA берет номер строки активной ячейки и помещает ее в столбец A таблицы на другом листе. - PullRequest
0 голосов
/ 03 марта 2020

Новый для VBA здесь. Почти законченный с этим проектом, над которым я работаю, и мне не хватает одной части, которую я не могу понять с помощью VBA.

Я использую форму пользователя для ввода данных в лист. У меня есть условие, что если диапазон столбцов (я назвал его)> 0, взять значение из другого столбца и использовать это значение, чтобы добавить столько строк в другую таблицу на другом листе.

Я получил все это работает Великий. У меня есть контрольно-пропускной пункт: мне также нужно, чтобы номер строки активной ячейки из исходного листа (с которым я использую форму пользователя) также был вставлен в столбец A всех новых строк, вставленных при выполнении кода.

Мне нужно это сделать, потому что у меня есть формулы в ячейках с B по E, которые рассчитываются на основе значения в строке A; и мне нужно, чтобы значение в строке a было номером строки из строки, которую я только что вставил в свой исходный лист (курила менталитет «активной ячейки»).

Очистить как грязь? Я надеюсь, что все это правильно объяснил и был бы очень признателен за любую помощь, которую я могу получить в этом. Я предоставил код. Это последняя часть, с которой мне нужна помощь. Я думаю, что все это oop я должен использовать, но я еще не использовал циклы в VBA.

 Sub AddRowsToTable()

 Dim targetTable As ListObject
 Dim valueLastRowLastCol As Long

 Set targetTable = Range("TblDateRng").ListObject

' Get last row, last column value
valueLastRowLastCol = Intersect(Rows(ActiveCell.Row), Range("Duration")).Value

'Add as many rows as the number in last column, last row of source table to target table
targetTable.Resize targetTable.HeaderRowRange.Resize(targetTable.ListRows.Count + valueLastRowLastCol 
+ 1)

'Execute the column number of the active cell from the source sheet, and places it in column (A) of 
new rows added from code above
For Each cell In targetTable.Range("A:A")
If targetTable.Range("A:A") = "" Then
Range("A:A").Value = ActiveCell.Row

MsgBox "Success"
End If
Next
End Sub
...