| 7. ワークシートの追加・削除・コピーと セルの操作−その1 |
![]() |
Excelでは、ブックにワークシートを追加・削除したり、シートを丸ごと他のブックにコピーすることができます。これらの機能は、もちろんVBAを使って、コードから実行することができます。 |
| @ ワークシートの追加 | 書式 | 使用例 |
|
ブックにワークシートを追加するには、WorkseetsコレクションのAddメソッドを使用します。 単純にブックにワークシートを追加するだけならとても簡単で、Worksheetsコレクションオブジェクトを指定してAddメソッドを実行するだけです。 追加したワークシートは、Excelのデフォルトワークシート名である「Sheet1」のように、自動的に連番でワークシート名が付加されます。 また、ワークシートを追加するブックを指定する場合は、Workbooksプロパティでブック名を指定して、Addメソッドを実行します。この場合、ワークシートを追加するブックはExcelによって開かれていなければなりません。
Addメソッドは4つの引数を持ち、これらを使うことでシートを挿入するブック内の位置や枚数を指定することができます。 Addメソッドで追加したワークシートは、自動的にアクティブなワークシートになります。 |
Worksheets.Add (Before, After,
Count, Type)
【属性】 メソッド
<記述例> |
<使用例 現在アクティブなブックにワークシートを1枚追加する> Worksheets.Add <使用例
ブック名を指定してシートを追加する> <使用例 ワークシートSheet2の後ろにシートを追加> |
| A ワークシートの削除 | 書式 | 使用例 |
|
Deleteメソッドを使用すると、指定したワークシートを削除できます。ただし、一度削除したワークシートは二度と復活できませんので、削除前に注意のメッセージボックスが表示されます。 操作対象のオブジェクトは、ActiveSheetプロパティやWorksheetsプロパティなどを使用して、Worksheetオブジェクトを指定します。 存在しないワークシート名を指定してDeleteメソッドを実行すると、エラーになります。
|
object.Delete
【属性】 メソッド
<記述例>
|
<使用例 シート名を指定して削除する> Worksheets("追加シート").Delete ループを使って、複数の削除を実行できます。ただし、1枚ワークシートを削除するごとに、注意のメッセージボックスが表示されます。 <応用例 ループでシートを連続削除する> Sub ループでシートを連続削除() Dim WSName As String For i = 1 To 3 WSName = "追加シート" & i Worksheets(WSName).Delete Next End Sub Array関数を使用して、削除するワークシート名を配列にし、Deleteメソッドを実行すれば、1回の操作で複数のワークシートを一括削除できます。 この場合、Deleteメソッドは1回しか実行されませんから、注意のメッセージボックスも1度だけしか表示されません。 この場合、現在選択状態にあるワークシートを把握するのに、WindowオブジェクトのSelectedSheetsプロパティを使用しています。 <応用例 Array関数を使ってワークシートを一括削除する> Sub Array関数を使った一括削除() Worksheets(Array("追加シート3", "追加シート2", "追加シート1")).Select ActiveWindow.SelectedSheets.Delete End Sub |
| B ワークシートのコピー | 書式 | 使用例 |
|
Copyメソッドを使用することで、指定したワークシートをコピーすることができます。 操作対象のワークシートを指定しCopyメソッドを実行するのですが、この時2つの引数を使うことができます。これらの引数を使用することで、コピー先をブック内のどの位置に挿入するのかを指定できます。 <Copyメソッドの引数>------------------ Before :指定したシートの前に挿入する After :指定したシートの後ろに挿入する ------------------------------------- コピーされたワークシートは、自動的にコピー元のワークシート名に「(2)」と数字が付加されたシート名が付けられます。 また、コピー元とコピー先が違うブックの場合は、それぞれブック名を付けてワークシートを指定します。 |
Object.Copy(Before, After)
【属性】 メソッド
<記述例> |
<使用例 ワークシートSheet1をコピーしSheet3の後ろに挿入する> Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")
<使用例 ブック間のワークシートコピー>
|
Worksheetオブジェクトにはたくさんのプロパティやメソッドが用意されていますが、その中にはセルを操作するものがあります。ここでは、知っていると便利なものをいくつか紹介します。 |
| C オートフィルタの設定 | 書式 | 使用例 |
|
ワークシートの指定したセル範囲にオートフィルタを設定するメソッドです。 オートフィルタとは、特定のセル範囲をリストとして、指定した条件の値だけをリスト表示する機能のことです。 Excel VBAでは、WorksheetオブジェクトのAutoFilterメソッドがこれを実行します。 操作対象オブジェクトに、リスト化するセル範囲をRsngeオブジェクトで指定します。この範囲には、表題となる見出しを含みます。そして、AutoFilterメソッドを実行すれば、セルに矢印ボタンが付いたリストが作成されます。
設定したオートフィルタは、矢印ボタンを押すことで、リスト表示する項目を自由に選べるようになります。 |
Object.AutoFilter(Field, Criteria1,
Operator, Criteria2)
【属性】 メソッド
<記述例> |
<使用例
セル範囲「A5:D22」のデータにオートフィルタを設定する> <使用例 第四フィールドの値116%のものだけを表示> |
| D すべての値を表示させる−オートフィルタの操作 | 書式 | 使用例 |
|
一度設定した抽出条件を元にす場合は、ShowAllDataメソッドを実行します。これで、すべての列のリスト表示が「すべて表示」になります。 次の操作例は、オートフィルタを「すべて表示」に戻し、改めてフィールド2に「トップテン」抽出を実行します。
|
Object.ShowAllData
【属性】 メソッド
<記述例>
|
<使用例
フィールド2に「トップテン」抽出を行う> |
| 【コラム Array関数】 配列を作成する関数です。 <書式> Array(arglist) 引数「arglist」に、配列にしたいデータを「,」(カンマ)で区切って設定します。 Worksheetsプロパティなど、コレクションの中から複数のオブジェクトを指定する場合などに使用すると有効です。 |