Worksheetsについて

現在作業しているWorkbookオブジェクトのすべてのWorksheetが格納されているのが、Worksheetsオブジェクトです

作業中のファイルにいくつワークシートがあるのか、どのワークシートをコピーして、どこに挿入するかなどを行う場合は、このWorksheetsオブジェクトを使用します

■オブジェクト

広告

WorksheetsオブジェクトはWorksheetオブジェクトのコレクションで、Sheetsオブジェクトのコレクションメンバーとなっています

つまり、Sheetsオブジェクト > Worksheetsオブジェクトということです

※Sheetには、WorksheetsオブジェクトとChartsオブジェクトが含まれています

・構文

構文は以下の通りです

Excel.Worksheets

このWorksheetsオブジェクトをWorksheets型にSetしようとすると怒られますw

実は、Sheets型にSetしないといけません!

・メソッド

オブジェクトのメソッドは以下の通りです

  • Add … 新しいワークシートをオブジェクトとして追加
  • Copy … ワークシートをコピー
  • Delete … ワークシートを削除
  • FillAcrossSheets … コレクション内の全ワークシートに同じ指定領域をコピー
  • Move … ワークシートを移動
  • Select … ワークシートを選択
  • etc…

印刷関連のメソッドについては除外しました(2つだけですがw)

・プロパティ

オブジェクトのプロパティは以下の通りです

  • Count … オブジェクト内のワークシートの数
  • HPageBreaks … 水平方向の改ページのコレクションを取得
  • Item … コレクション内の単一オブジェクトを取得
  • Parent … 親オブジェクト(Workbookオブジェクト)を取得
  • Visible … オブジェクトを表示するかどうか
  • VPageBreaks … 垂直方向の改ページのコレクションを取得
  • etc…

Application、Creatorプロパティについては記載を除外しました(どこにでもあって、使い方道がよくわからないのでw)

HPageBreaksとVPageBreaksとVisibleプロパティについては、そっとしておきます

■例

広告

・簡単なサンプル

Sub SampleWorksheets()
    Dim wss As Sheets
    Dim ws  As Worksheet
	
    ' ①
    Set wss = Excel.Worksheets
    Debug.Print "① " & wss.Count
    For Each ws In wss
        Debug.Print "① " & ws.Name, ws.Parent.Name
    Next
    Set wss = Nothing
	
    ' ②
    Set wss = Excel.Workbooks(1).Worksheets
    Debug.Print "② " & wss.Count
    For Each ws In wss
        Debug.Print "② " & ws.Name, ws.Parent.Name
    Next
    Set wss = Nothing
	
    ' ③
    Set wss = Excel.Application.Worksheets
    Debug.Print "③ " & wss.Count
    For Each ws In wss
        Debug.Print "③ " & ws.Name, ws.Parent.Name
    Next
    Set wss = Nothing
	
    ' ④
    Set wss = Excel.Application.ActiveWorkbook.Worksheets
    Debug.Print "④ " & wss.Count
    For Each ws In wss
        Debug.Print "④ " & ws.Name, ws.Parent.Name
    Next
    Set wss = Nothing
End Sub

実行サンプルの絵です(いきなりどうした!?w)

このサンプルソースは、Sample.xlsmの「Sheet1」に記載しており、サンプル.xlsmをActiveにした状態で、SampleWorksheetsメソッドを実行いた結果をイミディエイトウィンドウに表示しています

Worksheetsについて 1

・説明

Worksheetsオブジェクトの取り方は、4パターン!(ホンマは他にも[Application.Workbooks(1).Worksheets]とかもあるけどw)

②だけがActiveではないWorkbookから取得していることがわかりますね

そして、Countプロパティも「For Each … Next」ステートメントでも「グラフ1」(Chartsオブジェクトに含まれるグラフシート)は取得されないことがわかります

どちらも取りたい場合は、最初に書いた通り、Sheetsオブジェクトを使います!

・注意点

  • 型 … Worksheets型ではなく、Sheets型に取得する
  • 取得できるもの … ワークシートのみ
  • Addメソッド … グラフシートが追加できる!?(らしいw)
  • そっとしておきたいプロパティがあるw

・その他

サラッとも触れていませんが、FillAcrossSheetsメソッド!これ実は便利なのです!(使い方の詳細については、いつかきっと、どこかで記載しますw)

Addメソッドもリファレンスを見る限りは、Worksheetsオブジェクトなのに、Chartオブジェクトを追加できるらしいのです!?

※Chartsオブジェクトには、Add2メソッドというのがあるそうですw

次はその辺りを調べましょー!

ではでは

広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする