MW211 EXIT

devlog
ExcelVBA/シートの指定
2014年09月04日
セルは以下の階層で指定する。
┌──────────────────────────────────────┐
│ブック.シート.セル                                                          │
└──────────────────────────────────────┘
ここでは「ブック.シート」階層についてまとめた。

以下のようにも指定できるが、それは上記の省略形である(詳細は後述)。
┌──────────────────────────────────────┐
│セル                                                                        │
│シート.セル                                                                 │
└──────────────────────────────────────┘

ブックの指定手段は以下の通り。
┌────────────────┬─────────────────────┐
│ThisWorkbook.シート.セル        │マクロのあるブック                        │
│ActiveWorkbook.シート.セル      │アクティブなブック                        │
└────────────────┴─────────────────────┘

シートの指定手段は以下の通り。
┌────────────────┬─────────────────────┐
│ブック.ActiveSheet.セル         │アクティブなシート                        │
│ブック.Worksheets(シート名).セル│シート名指定によるシート                  │
└────────────────┴─────────────────────┘
「Worksheets(シート名)」は「Sheets(シート名)」でもOKだが、
(グラフ等を除く)純粋なワークシートとしては「Worksheets(シート名)」指定が厳密的。

ブックの指定は、マクロの書いているブックに絞り込んだ方が安全。
┌─────────────────────┬────────────────┐
│○ThisWorkbook.ActiveSheet.セル           │                                │
│△ActiveWorkbook.ActiveSheet.セル         │完全に動的な指定                │
│○ThisWorkbook.Worksheets(シート名).セル  │完全に静的な指定                │
│△ActiveWorkbook.Worksheets(シート名).セル│                                │
└─────────────────────┴────────────────┘
できるだけ静的な指定とすると想定外のミスを減らせる。

そして、お待ちかねの省略形の実態。
┌─────────────┐  ┌──────────────────────┐
│セル                      │=│ActiveWorkbook.ActiveSheet.セル             │
├─────────────┤  ├──────────────────────┤
│Worksheets(シート名).セル │=│ActiveWorkbook.Worksheets(シート名).セル    │
└─────────────┘  └──────────────────────┘
つまり動的な指定のオンパレードなのだ。

ということで、省略形は一時的なプログラムではいいとしても
本格的なプログラムでは避けた方がいいだろう。
分類:ExcelVBA