我遇到的问题似乎很简单,但我无法弄清楚我的代码有什么问题。
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”单元格中的文本。 ..
我错过了什么?
干杯
答案 0 :(得分:3)
名称必须以字母或下划线开头,不得包含空格,且不得与Excel中的保留关键字相同。
例如:
名称不能以数字开头。
名称不能是“这是一个测试”
名称不能是“A1”
“KL2000”不能用作名称,因为它会与单元格引用KL2000冲突,但“_KL2000”可用。
您应该始终在Excel应用程序中尝试直接尝试使用VBA。如果您使用“KL2000”之类的名称进行了此操作,则会收到有意义的错误消息。