Warning: session_start(): open(/home/var/php/8/r/sess_8r3ngrmf5etn5apqtb6qtafdc3, O_RDWR) failed: No such file or directory (2) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15

Warning: session_start(): Failed to read session data: files (path: 2;/home/var/php) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15
devlog
MW211 EXIT

devlog
ExcelVBA/選択中のシートを制御する
2015年07月19日
選択中のシート群は「ActiveWindow.SelectedSheets」で指定できる。
(おなじみの「ActiveWorkbook」ではないので注意)

以下のような感じでワークシート型に落とし込める。
┌──────────────────────────────────────┐
│Dim theSheet As Worksheet                                                   │
│For Each theSheet In ActiveWindow.SelectedSheets                            │
│    MsgBox theSheet.Name                                                    │
│Next theSheet                                                               │
└──────────────────────────────────────┘
件数は「ActiveWindow.SelectedSheets.Count」で取得できる。

なお、上記で「theSheet.Index」で取得できる値は、
あくまで当該ブック中のインデックス番号なので
「選択している中で何件目」という値とは一致しない。
(インデックス番号「2と3」を選択した場合は、「1と2」ではなく「2と3」となる)

何件目を取得するには、「theSheet」では既に個々のワークシートに
落とし込まれているので、そこから辿ることは不可能なようで
別途、カウンタでも横に置いて把握するしかないようだ。

一方、以下のようにダイレクトに配列として使用することもできる。
┌──────────────────────────────────────┐
│MsgBox ActiveWindow.SelectedSheets(1).Name                                  │
└──────────────────────────────────────┘
こちらは、「選択している中で何件目」を指定する。(1オリジン)
分類:ExcelVBA