使用VB.NET在dynamic创build的Excel表单中命名一个范围

我想在dynamic创build的Excel表格中命名一个范围。 我试过以下,但它不工作。

With oWB For intCount = 1 To wbnum1 .Worksheets.Add(After:=.Worksheets(intCount + 1)) .Sheets(intCount + 1).Name = "Sheet" & intCount.ToString() .Sheets(intCount + 1).Cells(19, 2).value = "Sheet" & intCount.ToString .Sheets(intCount+1).Range("A1:Z1") .Range.Name = "Numbers" Next 

这有什么问题?

谢谢

你没有指定一个范围。

据推测,你应该合并你的倒数第二行:

 .Sheets(intCount+1).Range("A1:Z1").Name = "Numbers" 

但是,从实验中看来,以这种方式分配名称会创build工作簿级别名称,从而导致在循环完工作表后,只有最后一个分配才有效。

另一种更安全的方法是通过工作表的名称集合将名称添加为工作表特定的名称:

 .Sheets(intCount+1).Names.Add "Numbers", .Sheets(intCount+1).Range("A1:Z1") 
 Dim uniqueName as String = "A_NamedRangeName_" & i Dim rnArea as Range = .ActiveSheet.Range(leftCol & startRow, rightCol & endRow) Name name = .ActiveBook.Names.Add(uniqueName, rnArea) 

名称范围名称不能:
– 以数字开头
– 包括,:; 人物
– 重复的名字,每个都必须有一个唯一的名字
– 是一个保留的excel函数名称