簡體   English   中英

使用VBA復制整個工作表時如何復制值和格式

[英]How to copy values and formatting when copy entire sheet with VBA

我下面的代碼非常有效。

它復制活動的工作表並創建一個基於特定單元格名稱的新工作表。

復制后可以修改為不包含公式嗎? 我只需要“值和格式”,因此新表是靜態快照。

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

下面是制作工作表靜態副本的一般方法:

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,而應使用對工作表的顯式引用。

我對代碼進行了一些修改,以將變量用於原始工作表和復制的工作表。 我使用.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM