りゅう
はじめに
今回は、シートの指定および参照について解説します。
3つのパターンの参照を例として挙げてサンプルコード付きで解説します。
最後までお付き合いください。
この記事を読むメリット
- 3つのパターンの参照方法が分かります
- 構文や引数などの基礎情報から学べます
- 参照における注意点も解説します
使用例
サンプルコード、引数を掲載し具体的な使用方法を説明します。
説明の前に、参照の手段として以下3つのパターンがあることを押さえておきましょう。
参照の3パターン
- 絶対的な参照:”1枚目のシートを参照する”という絶対的な位置を指定する参照方法
- 相対的な参照:”隣のシートを参照する”という相対的な位置を指定する参照する方法
- 相対的な参照:”アクティブなシート(最前面にあるシート)を参照する”という参照方法
絶対的な参照
シート参照において最も基本かつ重要になる絶対参照の解説です。
構文
WorksheetObject.Worksheets(index:name)
引数
# | 引数 | 必須 | 詳細 |
1 | index | △ | シートのインデックス番号を指定します。 インデックス番号は、先頭のワークシートから1,2,3…の順に割り振られています。 ※シートの追加・削除・移動などを実施するとインデックス番号が振りなおされます。 |
2 | name | △ | シート名を指定します。 |
りゅう
記載した通り、インデックス番号はシートの追加や削除などの処理を行うと再割り振りが発生しますので、シート名の指定がベターでしょう。
なお、「先頭のシート」や「末尾のシート」という参照の場合は、インデックス番号がオススメです。
なお、「先頭のシート」や「末尾のシート」という参照の場合は、インデックス番号がオススメです。
サンプルコード
Public Sub referenceSheet()
' 先頭(一番左)のシートを選択する
ThisWorkbook.Worksheets(1).Select
' 末尾(一番右)のシートを選択する
ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Select
' Sheet1を選択する
ThisWorkbook.Worksheets("Sheet1").Select
End Sub
相対的な参照
使用頻度は少ないものの、柔軟性がある相対参照の解説です。
構文
WorksheetObject.Next/Previous
サンプルコード
Public Sub referenceSheet()
' 2番目のシートを起点にし、右隣のシートを選択する
ThisWorkbook.Worksheets(2).Next.Select
' Sheet2を起点にし、左隣のシートを選択する
ThisWorkbook.Worksheets("Sheet2").Next.Select
End Sub
アクティブシートの参照
アクティブシートの参照の説明です。
構文
WorkbookObject.ActiveSheet
サンプルコード
Public Sub referenceSheet()
' アクティブシート名をメッセージボックスに出力する
MsgBox ThisWorkbook.ActiveSheet.Name
End Sub
りゅう
アクティブシートは、シートに関わる処理を実行すると自動で切り替わることがありますので、極力避けた方がよいでしょう。
アクティブシートの危険性については、以下の記事にて解説しています。
アクティブシートの危険性については、以下の記事にて解説しています。
【Excel VBA】ActivateSheetの危険性について
はじめに 今回は、ネットでよく見かける「ActiveSheet」のデメリットについてです。 こちらはVBA以外の理解があるプログラマさんでも、使っている方が多いと思いますが...
参照時の注意点
参照時には、存在しないシートを参照するとエラーとなることを意識するようにしましょう。
例えば、以下コードは 先頭のシートの左隣を参照しますが、そもそも対象となるシートが存在しないためシステムエラーとなります。
サンプルコード
Public Sub referenceSheet()
ThisWorkbook.Worksheets(1).Previous.Name
End Sub
場合により、シートの存在チェックのテクニックを活用しましょう。
【Excel VBA】シートの存在チェック(同名シートの存在チェック)
はじめに 今回は、シートの存在チェックについて解説します。シートの追加やシート名の変更などを実施する際に、ブック内に同名のブックがあるとエラーとなってしまい...
さいごに
いかがでしたでしょうか。
私としては、エラーや予期せぬ挙動を避けるため、「絶対的な参照」を使用するように心がけています。
場合によって、さまざまな参照を使い分けてコーディングしましょう。
コメント