好吧,我有一个电子表格,我试图复制一个新工作表,然后在原始电子表格中重新命名为一个单元格的值。当我第一次运行宏时,它工作正常。然而,随后的时间,它给了我“名称已经被采纳”的错误,并试图再次传递原始变量(x)的值,而不是在单元格C2中获取新值。VBA - 变量在第二次运行宏后没有更新
我是自学成才的,在这方面还是相当新的,所以任何帮助都将不胜感激。我觉得错误可能会出现在我的范围参考中,因为有一种不同的方式来声明变量(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
您正在命名工作表,并且每个工作表都必须具有唯一的名称。因为你从C2获取工作表名称,如果C2中的值没有改变,那么你试图给工作表一个重复的名字,这将导致你所描述的错误。确保你没有试图分配一个重复的工作表名称。 – tigeravatar
运行宏后,工作簿中的活动工作表将成为副本。如果更新该工作表上的单元格C2,再次运行该宏会导致所描述的错误,因为该脚本将查看Sheet1上的单元格C2。你有没有机会犯这个错误? – phhlho
@tigeravatar - 我每次尝试更新单元格C2都会改变它。例如。第一次运行的单元格C2是10011-01,我在第一次将其更改为10011-02,但它仍然给我同样的错误,然后当我返回到Sheet 1时,宏已将10011-02替换为原来的10011-01。 – DataNinja