2

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

这有什么问题?

谢谢

4

2 回答 2

2

您没有指定范围。

大概,你应该合并你的最后一行和倒数第二行:

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

但是,从实验看来,以这种方式分配名称会创建工作簿级别的名称,从而导致在您遍历工作表后只有最后一个分配有效。

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

.Sheets(intCount+1).Names.Add "Numbers", .Sheets(intCount+1).Range("A1:Z1")
于 2012-11-01T05:01:16.553 回答
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 函数名称

于 2012-11-01T05:35:41.947 回答