VBA – variables第二次运行macros后不更新

好吧,我有一个电子表格,我试图复制一张新的工作表,然后重新命名为原始电子表格上一个单元格的值。 当我第一次运行macros时,它工作正常。 然而,随后的时间,它给了我“名称已经被采纳”的错误,并试图再次传递原始variables(x)的值,而不是在单元格C2中获取新的值。

我是自学的,在这方面还是相当新的,所以任何帮助将不胜感激。我觉得错误可能会在我的范围参考,因为有一种不同的方式来声明variables(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 

不能有两张同名的纸张。 因此,当您第二次运行代码时,添加的新工作表将根据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值,上面的代码将毫无问题地运行。