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

範囲を指定していません。

おそらく、最後の行と最後から 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 に答える