我遇到了一个看似简单的问题,但我无法弄清楚我的代码有什么问题。
Dim x As Long, y As Long, z As Long
Dim ContractName As String
Dim RangeToName As Range
y = Cells(1, 1).End(xlToRight).Column
For x = 1 To y
ContractName = Cells(1, x)
z = Cells(Rows.count, x).End(xlUp).Row
Set RangeToName = Range(Cells(2, x), Cells(z, x))
RangeToName.Name = ContractName
Next x
End Sub
我正在尝试根据“ContractName”单元格中的文本来命名范围,该文本将针对每个 x 进行更改。
但是“RangeToName.Name = ContractName”行给了我一个运行时 450 错误。
但是,如果我在该行中添加任何其他文本,例如“RangeToName.Name =”test“& ContractName”,一切都会正常,并且我的范围以完整的文本字符串命名,包括“ContractName”单元格中的文本。 .
我错过了什么?
干杯
最佳答案
名称必须以字母或下划线开头,不得包含空格,并且不得与 Excel 中的保留关键字相同。
例如:
名称不能以数字开头。
名称不能是“这是一个测试”
名称不能是“A1”
“KL2000”不能用作名称,因为会与单元格引用 KL2000 冲突,但“_KL2000”可以使用。
您应该始终直接在 Excel 应用程序中尝试使用 VBA 执行的操作。如果您使用“KL2000”之类的名称执行此操作,您将收到一条有意义的错误消息。
关于VBA:使用字符串变量设置范围名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098242/