Vba コードを使用して新しいシートを作成するにはどうすればよいですか?
VBA の学習を開始したら、できる最も素晴らしいことの 1 つは、ワークブックに新しいワークシートを挿入する VBA コードを作成することです。
新しいワークシートを挿入するためのショートカット キーがすでに用意されていますが、通常のオプションを使用することもできますが、VBA コードを使用する利点は、ワンクリックで複数のワークシートを追加でき、追加する場所も定義できることです。それ。
このためには、Sheets.Add メソッドを使用する必要があります。この記事では、このメソッドを使用してワークブックに 1 つ以上のワークシートを追加する方法を学びます。
Sheets.Add メソッド
Sheets.Add ([Before], [After], [Count], [Type])
- Before: シートの前に新しいシートを追加します。
- 後: シートの前に新しいシートを追加します。
- カウント: 追加するシートの数。
- タイプ: 追加するシートのタイプ ( LINK )
新しいシートをワークブックに追加する VBA コードを作成する
Visual Basic エディターを開き、次の手順に従います。
- まず、Sheets.Add メソッドを入力する必要があります。
- 次に、新しいシートを追加する場所 (前または後) を定義する必要があります。
- 次にワークシートの数を入力します。
- 結局はシートの種類。
VBA コードを使用してワークブックに新しいシートを追加するさまざまな方法
新しいシートをワークブックに追加するさまざまな方法を以下に示します。
1. シートを 1 枚追加します
単一のシートを追加するには、引数を指定せずに以下のコードを使用できます。
Sub SheetAddExample1() ActiveWorkbook.Sheets.Add End Sub
このコードは Excel にアクティブなワークブックにシートを追加するように指示しますが、引数がないため、既定値が使用され、アクティブなシートの前にワークシート (xlWorksheet) が追加されます。
これを記述する別の方法は次のとおりです。以下のコードを参照してください。
Sub SheetAddExample2() Sheets.Add End Sub
すでにアクティブなワークブックにいるため、以下のコードを使用することもできます。彼も同じことをします。
2. 複数のシートを追加する
複数のシートを一度に追加するには、追加するシートの数を COUNT 引数に設定するだけです。
Sub AddSheets3() Sheets.Add Count:=5 End Sub
ここで設定したシートの数は 5 であるため、このコードを実行すると、5 つの新しいシートが即座にワークブックに追加されます。
3. 名前を付けてシートを追加する
シートを追加した後に名前を変更したい場合は、次のコードを使用できます。
Sub AddNewSheetswithNameExample1() Sheets.Add.Name = "myNewSHeet" End Sub
上記のコードでは、シートの名前を指定するのに役立つ名前 ( LINK ) オブジェクトを使用しました。
4. セルの名前を付けてシートを追加する
セルからシート名として使用する値を取得することもできます。
Sub AddNewSheetswithNameExample2() Sheets.Add.Name = Range("A1") End Sub
上記のコードでは、セル A1 を使用して新しいシートの名前を取得します。
5. 特定のシートの前後にシートを追加する
これらの引数は Sheets.Add にすでに存在するため、前後に新しいシートを追加するシートを指定できます。
Sub AddSheetsExample5() Sheets.Add Before:=Worksheets("mySheet") Sheets.Add After:=Worksheets("mySheet") End Sub
上記のコードには、Sheet.Add メソッドの引数の前後で使用した 2 行のコードがあります。したがって、このコードを実行すると、「mySheet」の前と後に 1 つずつ、計 2 つのシートが追加されます。
6. 先頭に新しいシートを追加します
before using 引数を使用すると、ワークブック内のシートの先頭にシートを追加することもできます。
したがって、基本的には、シート名の代わりにシート番号を指定することになります。
Sub AddSheetsExample6() Sheets.Add Before:=Sheets(1) End Sub
上記のコードでは、シート番号 (1) を使用しています。これは、すべてのワークシートの最初の位置にあるシートの前にシートを追加するように VBA に指示します。こうすることで、常に最初に新しいシートが追加されます。
7. 最後(最後のシートの後)に新しいシートを追加します
最後に新しいシートを追加するには、別の方法でコードを記述する必要があります。そのため、最後に新しいシートを追加できるように、ワークブックにシートが何枚あるかを知る必要があります。
Sub AddSheetsExample8() Sheets.Add After:=Sheets(Sheets.Count) End Sub
上記のコードでは、Sheet.Count はブック内にあるシートの数を返します。また、after 引数を設定しているため、ブック内の最後のシートの後に新しいシートが追加されます。
8. 複数のシートを追加し、範囲名を使用する
次のコードは、A1:A7 の範囲内の行をカウントします。その後、範囲数に基づいてシートを追加するループが行われ、追加時に範囲値を使用してシートに名前を付けます。
Sub AddSheetsExample9() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A7").Cells(i, 1).Value Worksheets.Add().Name = sheet_name Next i End Sub
ただし、上記のコードでは、追加するシートの名前がすでに存在しているか、名前の範囲に空のセルがある可能性があります。
この場合、同じ名前のシートが既に存在するかどうか、およびシート名を取得するセルが空かどうかを確認するコードを記述する必要があります。
両方の条件が満たされる場合にのみ、新しいシートを追加する必要があります。 2 つのステップに分けて説明します。
まず、同じ名前のシートが既に存在するかどうかを確認するExcel ユーザー定義関数を作成する必要があります。
Function SheetCheck(sheet_name As String) As Boolean Dim ws As Worksheet SheetCheck = False For Each ws In ThisWorkbook.Worksheets If ws.Name = sheet_name Then SheetCheck = True End If Next End Function
次に、この関数を使用してコードを記述する必要があります。このコードでは、名前のセルが空かどうかもチェックする必要があります。
Sub AddMultipleSheet2() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A10").Cells(i, 1).Value If SheetCheck(sheet_name) = False And sheet_name <> "" Then Worksheets.Add().Name = sheet_name End If Next i End Sub
上記のコードではVBA IF ステートメントを使用しており、このステートメントにはシート名をチェックするシート チェック関数があり、名前のセルに空の値があるかどうかをチェックする条件があります。
関連するチュートリアル
- Excel で VBA を使用してシート全体を消去する
- VBA を使用して Excel でシートをコピーおよび移動する
- Excel で VBA を使用した COUNT シート
- VBA ワークシート オブジェクト
- VBAを使用してシートをアクティブ化する
- VBA シートが存在するかどうかを確認する