1

Я очень новичок в VBA и макросах, поэтому я прошу прощения, если это просто. Я нашел похожие посты, но ничего не смог приспособить к своей проблеме. Я нашел код для создания новой рабочей таблицы для каждой новой записи в списке в моей рабочей книге, которая работает хорошо. Я хотел бы, чтобы каждая строка на мастер-листе была скопирована в соответствующую вкладку, созданную в макросе выше, если значение в столбце BT соответствует имени новой рабочей таблицы. Я нашел следующий код, который, как мне показалось, я корректировал, но при запуске я получаю «ошибку компиляции - подпрограмма или функция не определены». мой мастер-лист называется 'final', а столбец BT содержит значение, совпадающее с именами других листов. Я понимаю, что -71 - это число столбцов слева от столбца, на которое ссылаются.

Sub copyPasteData()
 Dim strSourceSheet As String
 Dim strDestinationSheet As String
 Dim lastRow As Long

strSourceSheet = "final"

Sheets(strSourceSheet).Visible = True
 Sheets(strSourceSheet).Select

Range("BT3").Select
 Do While ActiveCell.Value <> ""
 strDestinationSheet = ActiveCell.Value
 ActiveCell.Offset(0, -71).Resize(1, ActiveCell.CurrentRegion.Columns.Count).Select
 Selection.Copy
 Sheets(strDestinationSheet).Visible = True
 Sheets(strDestinationSheet).Select
 lastRow = LastRowInOneColumn("A")
 Cells(lastRow + 1, 1).Select
 Selection.PasteSpecial xlPasteValues
 Application.CutCopyMode = False
 Sheets(strSourceSheet).Select
 ActiveCell.Offset(0, 2).Select
 ActiveCell.Offset(1, 0).Select
 Loop
 End Sub

Каждый месяц мне нужно будет вставлять новые данные поверх мастер-листа, и я хотел бы, чтобы другие листы менялись в соответствии. Благодарен за любую помощь, которая избавит меня от необходимости много раз фильтровать и копировать вставки в каждую вкладку. Я использовал теги 2007 и 2010, так как я должен иметь возможность запускать их в обоих.

1 ответ1

0

lastRow = LastRowInOneColumn("A")
Замените приведенную выше строку, я думаю, что LastRowInOneColumn не является определенной функцией, с

lastRow = Sheets(strDestinationSheet).Range("A1").End(xlDown).Row
Это дает вам последний ряд в столбце А

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .