VBA:使用String变量设置范围名称

时间:2015-03-17 11:45:45

标签: excel vba excel-vba

我遇到的问题似乎很简单,但我无法弄清楚我的代码有什么问题。

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”单元格中的文本。 ..

我错过了什么?

干杯

1 个答案:

答案 0 :(得分:3)

名称必须以字母或下划线开头,不得包含空格,且不得与Excel中的保留关键字相同。

例如:

名称不能以数字开头。

名称不能是“这是一个测试”

名称不能是“A1”

“KL2000”不能用作名称,因为它会与单元格引用KL2000冲突,但“_KL2000”可用。

您应该始终在Excel应用程序中尝试直接尝试使用VBA。如果您使用“KL2000”之类的名称进行了此操作,则会收到有意义的错误消息。