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

使用VB.NET在动态创建的excel工作表中命名一个范围,vb.net,excel,range,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"

我想在动态创建的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"
但是,从实验中可以看出,以这种方式分配名称会创建工作簿级别的名称,从而在循环浏览工作表后,只有最后一次分配才有效

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

.Sheets(intCount+1).Names.Add "Numbers", .Sheets(intCount+1).Range("A1:Z1")
名称范围名称不能:
-以数字开头
-包括:;字符
-如果名称重复,则每个名称必须具有唯一的名称
-保留excel函数名

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