0

Excel の名前範囲に値のリストがあります。VB コードを記述して、これらの値のリストを使用してワークシートを作成したいと考えています。これらの値のリストは変化し続けます。

コードは次のとおりです。

Sub AddSheets()
Dim cell As Excel.Range
Dim wsWithSheetNames As Excel.Worksheet
Dim wbToAddSheetsTo As Excel.Workbook
Dim i As Integer
i = 0
Set wsWithSheetNames = ActiveSheet
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In wsWithSheetNames.Range("sheet_name").End(xlDown)
    With wbToAddSheetsTo
        .Sheets.Add after:=.Sheets(.Sheets.Count)
        On Error Resume Next
        ActiveSheet.Name = cell.Value
        If Err.Number = 1004 Then
          Debug.Print cell.Value & " already used as a sheet name"
        End If
        On Error GoTo 0
    End With
Next cell

ここsheet_name(単一列のセル) は、作成されるシートの名前がダンプされる名前範囲です。枚数は変更になる場合がございます。

上記のコードは正しく機能しません。この範囲の最後の値のシート名でシートを作成するだけです。どこが間違っていますか? 私はVBを初めて使用しています。これを行うためのより良い方法は何ですか?

4

2 に答える 2

1

この行:

For Each cell In wsWithSheetNames.Range("sheet_name").End(xlDown)

.End(xlDown)あなたが言ったように、これは最後の値を取得するだけです。

範囲に名前を付ける場合、名前を使用するだけで、範囲全体が既に定義されています。

于 2013-10-31T15:46:01.820 に答える
0

あなたはほとんどそこにいます。スクリプトの次の行に注意してください。最後に .End(xldown) を削除してください。

---wsWithSheetNames.Range("sheet_name").End(xlDown) 内の各セルについて-----

への変更

--- wsWithSheetNames.Range("sheet_name") 内の各セルについて ---

次に、個々のシート名を次々に追加します。

于 2013-10-31T15:56:37.290 に答える