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 值,以上代码将 运行 没有问题。
好的,所以我有一个传播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 值,以上代码将 运行 没有问题。