使用VB.NET在动态创建的Excel工作表中命名范围

时间:2012-11-01 03:01:48

标签: vb.net excel range

我想在动态创建的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

这有什么问题?

由于

2 个答案:

答案 0 :(得分:1)

您没有指定范围。

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

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

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

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

.Sheets(intCount+1).Names.Add "Numbers", .Sheets(intCount+1).Range("A1:Z1")

答案 1 :(得分:1)

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函数名称