Как копировать значения и форматирование при копировании всего листа с помощью VBA - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть приведенный ниже код, который работает очень хорошо.

Он копирует активный лист и создает новый лист с именем на основе определенной ячейки.

Можно ли изменить это, чтобы при копировании не включать формулы?Мне нужны только значения и форматирование, поэтому новый лист представляет собой статический снимок.

Sub Copyrenameworksheet()
Dim ws As Worksheet
Set wh = Worksheets(ActiveSheet.Name)
ActiveSheet.Copy After:=Worksheets(ActiveSheet.Name)
If wh.Range("C2").Value <> "" Then
ActiveSheet.Name = wh.Range("C2").Value
End If
wh.Activate
End Sub

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Как насчет следующего общего метода создания статической копии рабочего листа:

Dim sht1 As Worksheet 'worksheet to copy from
Dim sht2 As Worksheet 'worksheet to paste to
Set sht1 = ThisWorkbook.Worksheets("Name of the Worksheet to copy from")
sht1.Cells.Copy 'Copy everything in the worksheet
Set sht2 = ThisWorkbook.Worksheets.Add 'create new blank worksheet
sht2.Cells.PasteSpecial xlPasteValues 'first paste values
sht2.Cells.PasteSpecial xlPasteFormats ' then paste formats
sht2.Name="Something" 'give a name to your new worksheet

Также, пожалуйста, избегайте использования ActiveSheet и вместо этого используйте явные ссылки на ваши рабочие листы.

0 голосов
/ 22 апреля 2019

Я немного изменил ваш код, чтобы использовать переменные для вашего исходного листа и вашего скопированного листа.Я использую .Value2 = .Value2 для удаления формул.Обратите внимание, что это приведет к ошибке, если вы попытаетесь создать несколько листов с одним и тем же именем в C2.

Sub Copyrenameworksheet()
Dim wsOrig As Worksheet, wsNew As Worksheet

Set wsOrig = Worksheets(ActiveSheet.Name)
wsOrig.Copy , wsOrig
Set wsNew = Worksheets(wsOrig.Index + 1)

If wsOrig.Range("C2").Value <> "" Then
    wsNew.Name = wsOrig.Range("C2").Value
End If

wsNew.UsedRange.Value2 = wsNew.UsedRange.Value2

wsOrig.Activate

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