VBA:设置范围名称与stringvariables

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

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”单元格中文本的完整string…

我错过了什么?

干杯

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

换一种说法:

名字不能以数字开头。

名字不能是“这是一个testing”

例如“KL2000”不能用作名称,因为会与单元格参考KL2000冲突。 但是“_KL2000”可以使用。

您应该直接使用Excel应用程序,您将使用VBA做什么。 如果你用“KL2000”这样的名字做了这个,你得到了一个有意义的错误信息。