ワークシートを追加することはよく行う操作です。ワークシートの追加の場合は、Worksheetsコレクションに対してAddメソッドを使い、引数指定で追加する位置や枚数を設定します。
Worksheetsコレクション.Add(Before、After、Count)
引数 | 内容 | 省略 |
---|---|---|
Before | ワークシートを追加する位置で、指定したシートの直前に追加される。 | 省略可。省略された場合は、アクティブシートの直前に追加される。 |
After | ワークシートを追加する位置で、指定したシートの直後に追加される。 | |
Count | 追加するシートの枚数を指定。 | 省略可。省略した場合は1枚だけ追加。 |
※BeforeとAfterを同時に指定することはできません。
この例は、Sheet3の後ろに2枚シートを追加するプロシージャです。単にWorksheets.Addだけ記述した場合は、選択されているSheet1の前(左側)に1枚ワークシートが追加されます。
また、Addメソッドで追加されたワークシートがアクティブシートになりますが、複数のワークシートが一度に追加された場合は、追加された一番左側のワークシートがアクティブシートとなります。
ワークシートの操作では、コピーと移動もよく利用する操作です。CopyメソッドとMoveメソッドがそれにあたりますが、どちらも同じ引数を持ち、コピー先や移動先を指定します。
コピー ……Worksheetsオブジェクト.Copy(Before、After)
移動 ……Worksheetsオブジェクト.Move(Before、After)
引数 | 内容 | 省略 |
---|---|---|
Before | シートのコピー・移動する位置を指定したシートの直前に指定。 | 省略可。 省略された場合は、新しいブックが自動的に作成され、そのブックにシートがコピー・移動します。 |
After | シートのコピー・移動する位置を指定したシートの直後に指定。 |
※BeforeとAfterを同時に指定することはできません。
例えば、シート「請求書」を先頭(1番目のワークシートの前)にコピーするには
Worksheets("請求書").Copy Before:=Worksheets(1)と記述します。
この例では、シート見出し「Sample」のワークシートをコピーして、アクティブになっているシートの前(左側)をコピー先に指定しています。コピーされて追加されたシートがアクティブになるので、その名前を「サンプル」としています。
Nameプロパティはワークシートの名前を設定・取得するときに利用します。
Worksheetオブジェクト.Name
コピーされたシートを新しいブックに移動する場合は以下のようなプロシージャを記述します。
Sub コピー()
Worksheets("Sample").Copy Before:=ActiveSheet
ActiveSheet.Name = "サンプル"
ActiveSheet.Move
End Sub
ワークシート「Sample」をコピーして、新しいブックに「サンプル」という名前のワークシートが移動します。
Excelで印刷するセル範囲が決まっている場合は、印刷範囲の設定を行います。PrintAreaプロパティは印刷範囲を設定し、PageSetupオブジェクト内で記述します。
Worksheetオブジェクト.PageSetupオブジェクト.PrintArea
上の例は、Withステートメントを利用し、PageSetup(ページ設定)で印刷範囲にセルB2を含むアクティブセル領域のセル番地を設定し、行タイトルに行1から行3を設定しています。
また、その設定の後に印刷プレビューに切り替えています。(※上の図では印刷プレビューではなく、印刷範囲の設定を確認したものです)Addressプロパティは、セル番地を取得します。このAddressプロパティは値の設定ができない取得専用のプロパティです。
また、PrintTitleRowsプロパティは、ページ設定のタイトルを設定するものです。行タイトルを設定すると、すべての印刷ページに指定された行が印刷されます。
印刷範囲を解除するには、以下のように記述します。
Sub 印刷範囲解除()
ActiveSheet.PageSetup.PrintArea = ""
End Sub
ワークシートに改ページを追加するには、横方向にページを分割する水平改ページと縦方向にページを分割する垂直改ページがあります。ワークシート内のすべての水平改ページはHPageBreaksコレクションで表現します。HPageBreaksコレクションはHPageBreaksプロパティで取得でき、Addメソッドを使うと水平改ページを追加できます。
水平改ページを追加するには
Worksheetオブジェクト.HPageBreaks.Add(Before)と記述します。
まず、改ページを挿入したい行の下のセルを選択します。ここでは、6行目と7行目の間に挿入したいので、セルB7を最初に選択しています。そして、アクティブされているセルが空白になるまで繰り返しの処理を行っています。つまり、アクティブセルの前に改ページを追加して、その後に3行下のセルを選択させています。この結果から、印刷プレビューを行うと製品が上から3つずつ表示される表が印刷されることになります。
また、改ページを解除する場合には以下のように記述します。
Sub 改ページ解除()
ActiveSheet.ResetAllPageBreaks
End Sub
ResetAllPageBreaksメソッドは、シート内のすべての改ページを解除するものです。ちなみに、垂直改ページを設定するには、VPageBreaksプロパティを使い、使い方はHPageBreaksプロパティと同様です。
ワークシートを保護する場合は、Worksheetオブジェクトに対してProtectメソッドを使います。このProtectメソッドの引数でパスワードを設定すると、シート保護の解除の際にパスワードを要求されます。
Worksheetオブジェクト.Protect(Password)
※引数となるPasswordは、大文字・小文字の区別をします。
上の例のプロシージャを実行するとアクティブシートが保護されます。データを変更しようとすると上図のようにメッセージが表示され、保護されていることが確認できます。
このシートの解除を行うプロシージャは以下のように設定します。
Sub ワークシートの保護解除()
ActiveSheet.Unprotect "My123"
End Sub
Unprotectメソッドがシートの保護を解除します。引数のPasswordに解除するためのパスワードを指定しておきます。
シートの内容の保護には、シートそのものを非表示にする方法があります。ワークシートの表示・非表示はVisibleプロパティを使います。
Worksheetオブジェクト.Visible
定数 | 内容 |
---|---|
xlSheetVisible(またはTrue) | ワークシートを表示する |
xlSheetHidden(またはFalse) | ワークシートを非表示にする |
xlSheetVeryHidden | ワークシートを非表示にする |
定数xlSheetVeryHiddenを指定すると、書式メニューからの[再表示]から再表示できなくなります。その際は、定数xlSheetVisibleで表示させるように設定が必要です。
この例では、選択されているシートが非表示されますので、Sheet2が非表示になります。また、元のようにSheet2を表示するにはVisibleプロパティをTrueで指定します。また、この状態ではSheet1が選択された状態ですので、再表示されたSheet2を再度選択させる指定も設定する必要があります。