トップ > スキル : アプリケーション > VBA for Excel > 応用編(オブジェクトの操作2)

VBA_EXCEL

オブジェクトの操作

ワークシートの操作

1.ワークシートの追加

ワークシートを追加することはよく行う操作です。ワークシートの追加の場合は、Worksheetsコレクションに対してAddメソッドを使い、引数指定で追加する位置や枚数を設定します。

Addメソッド

Worksheetsコレクション.Add(Before、After、Count)

引数 内容 省略
Before ワークシートを追加する位置で、指定したシートの直前に追加される。 省略可。省略された場合は、アクティブシートの直前に追加される。
After ワークシートを追加する位置で、指定したシートの直後に追加される。
Count 追加するシートの枚数を指定。 省略可。省略した場合は1枚だけ追加。

※BeforeとAfterを同時に指定することはできません。

この例は、Sheet3の後ろに2枚シートを追加するプロシージャです。単にWorksheets.Addだけ記述した場合は、選択されているSheet1の前(左側)に1枚ワークシートが追加されます。
また、Addメソッドで追加されたワークシートがアクティブシートになりますが、複数のワークシートが一度に追加された場合は、追加された一番左側のワークシートがアクティブシートとなります。

2.シートのコピーと移動

ワークシートの操作では、コピーと移動もよく利用する操作です。CopyメソッドとMoveメソッドがそれにあたりますが、どちらも同じ引数を持ち、コピー先や移動先を指定します。

  コピー ……Worksheetsオブジェクト.Copy(Before、After)

  移動 ……Worksheetsオブジェクト.Move(Before、After)

引数 内容 省略
Before シートのコピー・移動する位置を指定したシートの直前に指定。 省略可。
省略された場合は、新しいブックが自動的に作成され、そのブックにシートがコピー・移動します。
After シートのコピー・移動する位置を指定したシートの直後に指定。

※BeforeとAfterを同時に指定することはできません。

例えば、シート「請求書」を先頭(1番目のワークシートの前)にコピーするには
Worksheets("請求書").Copy Before:=Worksheets(1)と記述します。

この例では、シート見出し「Sample」のワークシートをコピーして、アクティブになっているシートの前(左側)をコピー先に指定しています。コピーされて追加されたシートがアクティブになるので、その名前を「サンプル」としています。
Nameプロパティはワークシートの名前を設定・取得するときに利用します。

Nameプロパティ

Worksheetオブジェクト.Name

コピーされたシートを新しいブックに移動する場合は以下のようなプロシージャを記述します。

ワークシート「Sample」をコピーして、新しいブックに「サンプル」という名前のワークシートが移動します。

3.印刷範囲の設定

Excelで印刷するセル範囲が決まっている場合は、印刷範囲の設定を行います。PrintAreaプロパティは印刷範囲を設定し、PageSetupオブジェクト内で記述します。

PrintAreaプロパティ

Worksheetオブジェクト.PageSetupオブジェクト.PrintArea

上の例は、Withステートメントを利用し、PageSetup(ページ設定)で印刷範囲にセルB2を含むアクティブセル領域のセル番地を設定し、行タイトルに行1から行3を設定しています。
また、その設定の後に印刷プレビューに切り替えています。(※上の図では印刷プレビューではなく、印刷範囲の設定を確認したものです)Addressプロパティは、セル番地を取得します。このAddressプロパティは値の設定ができない取得専用のプロパティです。

また、PrintTitleRowsプロパティは、ページ設定のタイトルを設定するものです。行タイトルを設定すると、すべての印刷ページに指定された行が印刷されます。

印刷範囲を解除するには、以下のように記述します。

4.改ページの設定

ワークシートに改ページを追加するには、横方向にページを分割する水平改ページと縦方向にページを分割する垂直改ページがあります。ワークシート内のすべての水平改ページはHPageBreaksコレクションで表現します。HPageBreaksコレクションはHPageBreaksプロパティで取得でき、Addメソッドを使うと水平改ページを追加できます。

水平改ページを追加するには
Worksheetオブジェクト.HPageBreaks.Add(Before)と記述します。

まず、改ページを挿入したい行の下のセルを選択します。ここでは、6行目と7行目の間に挿入したいので、セルB7を最初に選択しています。そして、アクティブされているセルが空白になるまで繰り返しの処理を行っています。つまり、アクティブセルの前に改ページを追加して、その後に3行下のセルを選択させています。この結果から、印刷プレビューを行うと製品が上から3つずつ表示される表が印刷されることになります。

また、改ページを解除する場合には以下のように記述します。

ResetAllPageBreaksメソッドは、シート内のすべての改ページを解除するものです。ちなみに、垂直改ページを設定するには、VPageBreaksプロパティを使い、使い方はHPageBreaksプロパティと同様です。

5.シートの保護

ワークシートを保護する場合は、Worksheetオブジェクトに対してProtectメソッドを使います。このProtectメソッドの引数でパスワードを設定すると、シート保護の解除の際にパスワードを要求されます。

Protectメソッド

Worksheetオブジェクト.Protect(Password)

※引数となるPasswordは、大文字・小文字の区別をします。

上の例のプロシージャを実行するとアクティブシートが保護されます。データを変更しようとすると上図のようにメッセージが表示され、保護されていることが確認できます。

このシートの解除を行うプロシージャは以下のように設定します。

Unprotectメソッドがシートの保護を解除します。引数のPasswordに解除するためのパスワードを指定しておきます。

6.ワークシートの表示・非表示

シートの内容の保護には、シートそのものを非表示にする方法があります。ワークシートの表示・非表示はVisibleプロパティを使います。

Visibleプロパティ

Worksheetオブジェクト.Visible

定数 内容
xlSheetVisible(またはTrue) ワークシートを表示する
xlSheetHidden(またはFalse) ワークシートを非表示にする
xlSheetVeryHidden ワークシートを非表示にする

定数xlSheetVeryHiddenを指定すると、書式メニューからの[再表示]から再表示できなくなります。その際は、定数xlSheetVisibleで表示させるように設定が必要です。

この例では、選択されているシートが非表示されますので、Sheet2が非表示になります。また、元のようにSheet2を表示するにはVisibleプロパティをTrueで指定します。また、この状態ではSheet1が選択された状態ですので、再表示されたSheet2を再度選択させる指定も設定する必要があります。