■ ワークシートの操作をマスターしよう!
前回は、ワークシートを参照する方法とワークシートの操作の一部について解説しました。今回は引き続き、ワークシートを操作する様々な手法について解説していきます。
ワークシートを操作する
VBAを使用することで、参照先のワークシートに対して様々な操作を行うことが可能です。
■Addメソッド、Deleteメソッド
Addメソッドは1つまたは複数の新しいワークシートを挿入します。Deleteメソッドは1つまたは複数のワークシートを削除します。
[書式]
オブジェクト.Add(左側, 右側, 枚数)
オブジェクトには、Worksheetsコレクションを指定します。
左側に指定したワークシートの左側に、右側に指定したワークシートの右側に、それぞれ新しいワークシートを挿入します。
枚数には、挿入するワークシートの枚数を指定します。省略すると1が指定されます。
※ 挿入するワークシート名は自動的に付けられます。変更する場合は、Nameプロパティを使用します。
[書式]
オブジェクト.Delete
オブジェクトには、Worksheetオブジェクトを指定します。
※ Deleteメソッドを使用してワークシートを削除すると、削除の確認ダイアログボックスが表示されます。ダイアログボックスを表示させないようにするには、Application.DisplayAlertsプロパティにFalseを指定します。
(例)
Sub Test()
Worksheets.Add Worksheets("Sheet1"), , 2
Application.DisplayAlerts = False
Worksheets("Sheet3").Delete
Application.DisplayAlerts = True
End Sub
このプロシージャを実行すると、アクティブブックの「Sheet1」シートの左側に新しいワークシートを2つ挿入します。さらに削除の確認なしで「Sheet3」シートをただちに削除します。 |
■Copyメソッド、Moveメソッド
Copyメソッドはワークシートをコピーします。Moveメソッドはワークシートを移動します。
[書式]
オブジェクト.Copy 左側, 右側
オブジェクト.Move 左側, 右側
オブジェクトには、Sheetsコレクション、Worksheetsコレクション、Worksheetオブジェクトを指定します。
左側に指定したワークシートの左側に、右側に指定したワークシートの右側に、それぞれワークシートをコピー/移動します。またこれらの引数を省略すると、新規ブックが自動的に作成され、そのブックにコピー/移動されます。
(注意)引数「左側」と引数「右側」を同時に指定することはできません。
※ 複数のブックを開いた状態なら、ワークシートを別のブックにコピー/移動することができます。その場合、
「Worksheets("Sheet1").Copy Workbooks("Test.xls").Worksheets("Sheet3")」
のように記述します。また、ワークシートのコピー/移動先に同じ名前のワークシートがある場合、「Sheet1(2)」のようにカッコ付きの名前に変更されます。
(例)
Sub Test()
Worksheets("Sheet1").Move , Worksheets("Sheet3")
Worksheets("Sheet1").Copy
End Sub
シート見出しが「Sheet1、Sheet2、Sheet3」となっている場合、このプロシージャを実行すると、シート見出しが「Sheet2、Sheet3、Sheet1」に変更されます。さらに、新規ブックが自動的に作成され「Sheet1」シートがコピーされます。 |
■Nameプロパティ
ワークシートの名前を取得・設定することができます。
[書式]
オブジェクト.Name
オブジェクト.Name = シート名
オブジェクトには、Worksheetオブジェクトを指定します。
シート名には、ワークシート名に設定する文字列を指定します。
(注意)ワークシート名には空白を指定することはできません。また
の記号を使用することもできません。なお、ワークシートの名前は31文字以内である必要があります。
(例)
Sub Test()
Worksheets.Add , Worksheets("Sheet1"), 1
ActiveSheet.Name = "NewSheet"
End Sub
このプロシージャを実行すると、アクティブブックの「Sheet1」シートの右側に新しいワークシートを挿入し、挿入されたワークシートの名前を「NewSheet」に変更します。 |
■Visibleプロパティ
Visibleプロパティは、ワークシートの表示/非表示の状態を切り替えます。
[書式]
オブジェクト.Visible
オブジェクト.Visible = 値
オブジェクトには、Worksheetオブジェクトを指定します。
値には、TrueまたはFalseまたはXLSheetVisibilityクラスの定数を指定します。Trueを指定するとワークシートを表示、Falseを指定すると非表示にします。
XLSheetVisibilityクラスの定数は次のものを指定します。
定数 |
内容 |
xlSheetHidden |
シートを非表示にするが、手動で再表示できる(Falseと同じ) |
xlSheetVeryHidden |
シートを非表示し、手動で再表示できない |
xlSheetVisible |
シートを表示する |
※ xlSheetVeryHiddenで非表示にしたシートを再表示させるには、xlSheetVisibleを設定する必要があります。
※ ワークシートを手動で再表示するには、[書式]メニューの[シート]>[再表示]をクリックして再表示ダイアログボックスを表示させます。次に非表示になっているシートを選択して[OK]ボタンをクリックします。xlSheetVeryHiddenに設定したシートは、この再表示ダイアログボックスに表示されません。
(例)
Sub Test()
Worksheets("Sheet1").Visible = Not Worksheets("Sheet1").Visible
End Sub
この例ではプロシージャが実行されるたびに、アクティブブックの「Sheet1」シートの表示/非表示を切り替えます。 |
■Countプロパティ
Countプロパティは、シートの数を数えて返します。その際、非表示なっているシートも数に含まれます。
[書式]
オブジェクト.Count
オブジェクトには、Sheetsコレクション、Worksheetsコレクション、Chartsコレクションを指定します。
Sheetsコレクション |
すべてのシートの数を返します |
Worksheetsコレクション |
すべてのワークシートの数を返します |
Chartsコレクション |
すべてのグラフシートの数を返します |
(例)
Sub Test()
Debug.Print Sheets.Count
Debug.Print Worksheets.Count
Debug.Print Charts.Count
End Sub
アクティブブックに3つのワークシートと2つのグラフシートがあるとき、このプロシージャを実行するとイミディエイトウィンドウに「5」「3」「2」が出力されます。 |
(例)
Sub Test()
Dim i As Long
For i = 1 To Worksheets.Count
Debug.Print Worksheets(i).Name
Next i
Worksheets.Add , Worksheets(Worksheets.Count)
End Sub
このプロシージャを実行すると、アクティブシートにあるすべてのワークシートの名前をイミディエイトウィンドウに出力します。さらに、シート見出しの一番右側にあるワークシートの右側に新しいワークシートを挿入します。 |
■Protectメソッド、Unprotectメソッド
Protectメソッドは、ワークシートを保護します。Unprotectメソッドは、ワークシートの保護を解除します。
[書式]
オブジェクト.Protect パスワード, 描画オブジェクト, コンテンツ, シナリオ, マクロ保護
オブジェクト |
Worksheetオブジェクトを指定します |
パスワード |
保護を解除するためのパスワードを文字列で指定します。省略するとパスワードなしで保護を解除することができます |
描画オブジェクト |
TrueまたはFalseを指定します。Trueを指定すると描画オブジェクトを保護します。省略するとFalseが指定されます |
コンテンツ |
TrueまたはFalseを指定します。Trueを指定するとワークシートでロックされているセルを保護します。省略するとTrueが指定されます |
シナリオ |
TrueまたはFalseを指定します。Trueを指定するとシナリオを保護します。省略するとTrueが指定されます |
マクロ保護 |
TrueまたはFalseを指定します。Falseを指定すると画面・マクロのどちらからも変更することができなくなります。省略するとFalseが指定されます |
※ Protectメソッドにはこの他にもたくさんの引数があります。ここでは代表的なものを解説しています。すべての引数についてはヘルプを参照してください。
[書式]
オブジェクト.Unprotect パスワード
オブジェクトには、Worksheetオブジェクトを指定します。
パスワードには、保護を解除するためのパスワードを文字列で指定します。省略すると、パスワードを設定しないで保護した場合はそのまま保護が解除され、パスワードを指定して保護した場合はパスワードの入力を求めるダイアログボックスが表示されます。
※ シートが保護されているかどうかを調べるには、ProtectContentsプロパティを使用します。例えば「Worksheets("Sheet1").ProtectContents」の返り値がTrueのとき、「Sheet1」シートは保護されています。Falseなら、保護されていません。
(例)
Worksheets("Sheet1").Protect "PASSWORD"
この例では、アクティブブックの「Sheet1」シートに「PASSWORD」というパスワードをかけて保護します。 |
(例)
Worksheets("Sheet1").Unprotect "PASSWORD"
Worksheets("Sheet1").Unprotect
上の例では、「PASSWORD」というパスワードで保護された「Sheet1」シートの保護を解除します。下の例では、パスワードの入力を求めるダイアログボックスを表示します。このとき、パスワードの入力を間違えると実行時エラーが発生するので注意してください。 |
■DisplayWorkbookTabsプロパティ、Tab.ColorIndexプロパティ
DisplayWorkbookTabsプロパティはシート見出しの表示/非表示を切り替えます。Tab.ColorIndexプロパティはシート見出しの色を取得・設定します。
[書式]
オブジェクト.DisplayWorkbookTabs
オブジェクト.DisplayWorkbookTabs = 値
オブジェクトには、Windowオブジェクトを指定します。
値には、TrueまたはFalseを指定します。Falseを指定するとシート見出しを非表示にします。
[書式]
オブジェクト.Tab.ColorIndex
オブジェクト.Tab.ColorIndex = 値
オブジェクトには、WorksheetオブジェクトまたはChartオブジェクトを指定します。
値には、カラーパレットのインデックス番号を指定します。色をなしにするにはXlColorIndexNoneを指定します。
(例)
Sub Test()
ActiveWindow.DisplayWorkbookTabs = _
Not ActiveWindow.DisplayWorkbookTabs
End Sub
この例ではプロシージャが実行されるたびに、アクティブウィンドウのシート見出しの表示/非表示を切り替えます。 |
(例)
Sub Test()
Dim o As Worksheet
For Each o In Worksheets
o.Tab.ColorIndex = 3
Next
End Sub
このプロシージャを実行すると、アクティブブックにあるすべてのワークシートのシート見出しを赤色に変更します。 |
以上で、ワークシートを操作する様々な手法についての解説を終わります。
ワークシートを自由に操作することで、さらにユーザーが使いやすい業務システムを提供することが可能です。前回のセル操作と併せて、今回の内容をよく理解しておいてください。
|