Excel VBA - копировать вкладку, вызывающую ошибки - PullRequest
0 голосов
/ 01 июля 2018

Я пишу макрос, чтобы создать новую вкладку в файле, назвать ее и скопировать из существующей вкладки шаблона. При этом появляется всплывающее окно с поиском файла с названием «Обновить значения: wbname.xlsm», который я затем должен отменить. Я не уверен, почему эта ошибка может возникать (хотя на вкладке используется много косвенных формул, для чего она стоит), но если есть объяснение, как предотвратить это всплывающее окно, или как построить закрытие его в коде, это ' буду очень полезным.

Кроме того, я добавил вторую часть вставки копии, так как ширины столбцов изначально не просматривались, но это также вызывает ошибку времени выполнения 1004, говорящую «все объединенные ячейки должны быть одинакового размера. Если есть лучший способ Скопируйте это, я был бы признателен, но в противном случае, я думаю, я бы сделал «при следующей ошибке».

Вот код:

TabName = InputBox("Please enter your testing date?") 
ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = TabName
Sheets("Template").Range("A1:BZ300").Copy Destination:=Sheets(TabName).Range("A1")
Sheets("Template").Range("A1:BZ300").Copy
With Sheets(TabName).Range("A1")
    .PasteSpecial xlPasteColumnWidths
    .PasteSpecial xlPasteValues, , False, False
    .PasteSpecial xlPasteFormats, , False, False
    .Cells(1).Select
    Application.CutCopyMode = False
End With
Calculate

1 Ответ

0 голосов
/ 01 июля 2018

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

Вы можете временно приостановить работу с помощью UpdateLinks = xlUpdateLinksNever.

Dim tabName As String, oldUL As Long

tabName = InputBox("Please enter your testing date?")

With ThisWorkbook
    oldUL = .UpdateLinks
    .UpdateLinks = xlUpdateLinksNever

    .Worksheets("template").Copy After:=.Worksheets(.Worksheets.Count)
    With .Worksheets(.Worksheets.Count)
        .Name = tabName
        .UsedRange.Cells = .UsedRange.Cells.Value
        .Cells(1).Select
    End With

    .UpdateLinks = oldUL
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...