好的,所以我有一个电子表格,我试图将其作为新工作表复制,然后在原始电子表格中重命名为单元格的值。当我第一次运行宏时,它工作正常。然而,在随后的时间里,它给出了“名称已被占用”错误,并尝试再次传递原始变量(x)的值,而不是在单元格C2中获取新值。
我是自学成才,但仍然相当新,所以任何帮助都会非常感激。我觉得错误可能会出现在我的范围参考中,因为有一种不同的方式来声明变量(x)那些细胞的价值,我可能会失踪。
Sub freezesheet()
Dim x As String
Sheets("Sheet1").Activate
x = Range("C2:C2").Value
Debug.Print (x)
Sheets("Sheet1").Copy after:=Sheets(3)
Sheets("Sheet1 (2)").Name = x
x = ""
Debug.Print (x)
Cells.Select
selection.Copy
selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
答案 0 :(得分:1)
不能有两张同名的纸张。因此,当您第二次运行代码时,添加的新工作表将根据Sheet1中的单元格C2重命名。
你也可以这样缩短代码...
Sub freezesheet()
Dim x As String
Sheets("Sheet1").Activate
x = Range("C2").Value
Sheets("Sheet1").Copy after:=Sheets(3)
ActiveSheet.Name = x
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
End Sub
如果每次在下次运行代码之前更改C2值,上面的代码将无问题地运行。