VBA - 变量在宏 运行 秒后不更新

VBA - Variable Not updating after a second run of the macro

好的,所以我有一个传播sheet,我试图在其中复制一个新的sheet,然后重命名为原始传播[=19=上的一个单元格的值].当我第一次 运行 宏时,它工作正常。然而,随后的一次,它给了我 "Name is already taken" 错误,并尝试再次传递原始变量 (x) 的值,而不是在单元格 C2 中获取新值。

我是自学成才的,在这方面还很陌生,所以任何帮助都会很大 appreciated.I 感觉错误可能出现在我的范围参考中,因为有一种不同的方式来声明变量 (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

不能有两个 sheet 同名。因此,当您 运行 第二次编写代码时,新添加的 sheet 将根据 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 值,以上代码将 运行 没有问题。