чому я отримую помилку компіляції при спробі скопіювати дані з основного аркуша на кілька робочих аркушів


1

Я дуже новачок у VBA та макросах, тому прошу вибачення, якщо це просто. Я знайшов подібні повідомлення, але нічого, що я можу пристосуватися до своєї проблеми. Я знайшов код для створення нового листа для кожного нового запису у списку в моїй робочій книжці, яка добре працює. Я хотів би, щоб кожен рядок на основному аркуші був скопійований у відповідну вкладку, створену в макросі вище, якщо значення в колонці BT збігається з назвою нового листа. Я знайшов наступний код, який я думав, що я правильно налаштував, але я отримую "помилка компіляції - sub або функція не визначена", коли я запустити його. мій основний аркуш називається «остаточним», а стовпець 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
Коли ви отримаєте помилку, якщо ви натиснете на кнопку Debug Кнопка, який рядок коду відображається як проблема?
CharlieRB

Відповіді:


0

lastRow = LastRowInOneColumn("A")
Замінити вищевказану лінію, я думаю, LastRowInOneColumn не є певною функцією, з

lastRow = Sheets(strDestinationSheet).Range("A1").End(xlDown).Row
Вона дає вам останній рядок у стовпці А


Привіт Дякую за це. Я змінив цей рядок і тепер я отримую помилку часу виконання '1004' на лінії - Клітинки (lastRow + 1, 1) .Виберіть. Я прошу вибачення за те, що не знаю, але я відчайдушно хочу, щоб ця частина роботи завершилася сьогодні.
Caroline Allen

Спробуйте це Sheets(strDestinationSheet).Cells(lastRow + 1, 1).Select Можливо, ваші дані занадто довгі

Якщо вищенаведена лінія не працює, слідуйте за цим посиланням і пояснює помилку 1004 http://www.runtimeerrorsfix.com/how-to-fix-runtime-error-1004.html

Спасибі @ SuperSam я пішов за посиланням, але не можу вирішити, як це виправити в моєму Excel. Я не можу побачити інструменти | Макроси | Безпека області.
Caroline Allen

Якщо у вас Excel 2007 і вище, введіть параметри Excel (кнопку або файл Office), центр довіри, параметри центру довіри
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.