我需要复制工作表并根据单元格值重命名,但是可以创建非动态副本吗? -由于需要更多的屏幕快照,因此所有值都保持不变,使我仍然可以处理原始图像-想法是我可以制作许多静态副本,但仍可以编辑主工作表。
到目前为止,我完成的代码可以完美复制,但是它是动态的,因此当main完成时会更改。我将如何编辑此代码,以便从本质上提供静态图像副本
Private Sub CommandButton3_Click()
Dim ws As Worksheet
Set wh = Worksheets(ActiveSheet.Name)
ActiveSheet.Copy After:=Worksheets(Sheets.Count)
If wh.Range("W13").Value <> "" Then
ActiveSheet.Name = wh.Range("W13").Value
End If
wh.Activate
End Sub
答案 0 :(得分:0)
添加以下行将有所帮助:
With ActiveSheet
.UsedRange.Copy
.UsedRange.PasteSpecial xlPasteValues
End With
您可以使用Range Class的Range.Pastespecial
属性
完整代码:
Private Sub CommandButton3_Click()
Dim ws As Worksheet
Set ws = Worksheets(ActiveSheet.Name)
ws.Copy After:=Worksheets(Sheets.Count)
With ActiveSheet
.UsedRange.Copy
.UsedRange.PasteSpecial xlPasteValues
End With
If ws.Range("W13").Value <> "" Then
ActiveSheet.Name = ws.Range("W13").Value
End If
ws.Activate
End Sub
答案 1 :(得分:0)
您所缺少的只是复制数据并将其粘贴为值
Private Sub CommandButton3_Click()
Dim ws As Worksheet
Set wh = Worksheets(ActiveSheet.Name)
ActiveSheet.Copy After:=Worksheets(Sheets.Count)
If wh.Range("W13").Value <> "" Then
ActiveSheet.Name = wh.Range("W13").Value
End If
With ActiveSheet.Cells
.Copy
.PasteSpecial xlPasteValues
Application.CutCopyMode = False
.Range("A1").Select
End With
wh.Activate
End Sub
答案 2 :(得分:0)
两个人建议复制并粘贴特殊值。这增加了将数据移动到剪贴板的操作,剪贴板是Excel外部的外部缓冲区。这具有清除用户剪贴板的副作用。如果他们复制了某些东西,现在将丢失。
这更快并且不会破坏剪贴板:
Private Sub CommandButton3_Click()
Dim oldSheet As Worksheet
Set oldSheet = ActiveSheet
oldSheet.Copy After:=Worksheets(Sheets.Count)
Dim newSheet As Worksheet
Set newSheet = ActiveSheet
If oldSheet.Range("W13").Value <> "" Then
newSheet.Name = oldSheet.Range("W13").Value
End If
With newSheet.UsedRange
.Value = .Value
End With
End Sub