Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » 選択されているシートだけ処理する-SelectedSheetsプロパティ

選択されているシートだけ処理する-SelectedSheetsプロパティ

対象:Excel2003, Excel2007, Excel2010, Excel2013

VBA(Visual Basic for Applications)で、Excelマクロを作っているときに、選択されているシートに対してループを回したい、と感じることがあります。

しかし、選択されているシートを取得するプロパティや、シートが選択されているかどうかを判別するようなプロパティが、SheetsコレクションやWorksheetオブジェクトに見つからないので、簡単にはできないと思ってしまう方もいらっしゃるようです。

実はWindowオブジェクトに、選択されているSheetsコレクションを返すプロパティが存在しています。SelectedSheetsプロパティです。

[スポンサードリンク]

選択されているシートに対するFor Each~Nextループ

Windowオブジェクトに用意されているSelectedSheetsプロパティを使えば、選択されているシートにだけ処理を行うようなマクロも簡単に作れます。


Sub 選択されているシート名だけを表示する1()
 Dim sh As Object
 For Each sh In ActiveWindow.SelectedSheets
  MsgBox sh.Name
 Next sh
End Sub

For Each~Next文のInの後ろがポイントです。
  For Each sh In ActiveWindow.SelectedSheets
ActiveWindowプロパティでアクティブなウィンドウを表すWindowオブジェクトを取得し、WindowオブジェクトのSelectedSheetsプロパティで、アクティブウィンドウで選択されているシートだけを含むSheetsコレクションを取得しています。

選択されているシートに対するFor~Nextループ

For Each~NextループはFor~Nextループでも書けますから、以下のような書き方も可能です。


Sub 選択されているシート名だけを表示する2()
 Dim i As Long
 For i = 1 To ActiveWindow.SelectedSheets.Count
  MsgBox ActiveWindow.SelectedSheets(i).Name
 Next i
End Sub

With文を使うと以下のとおりです。


Sub 選択されているシート名だけを表示する3()
 Dim i As Long
 With ActiveWindow.SelectedSheets
  For i = 1 To .Count
   MsgBox .Item(i).Name
  Next i
 End With
End Sub

最終更新日時:2019-01-18 13:22

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » 選択されているシートだけ処理する-SelectedSheetsプロパティ

TrackBack:3

TrackBack URL
ヘッダー・フッターを削除するExcelマクロ from インストラクターのネタ帳
ヘッダー・フッターを削除するExcel(エクセル)マクロをご紹介しています。
VBAで複数シートが選択されているかどうか確認する from インストラクターのネタ帳
ActiveWindow.SelectedSheets.Countというコードを使って、複数のシートが選択されているかどうかを確認するExcel(エクセル...
SelectedSheetsで取得した選択シートを配列に from インストラクターのネタ帳
SelectedSheetsで取得した選択シート名等を配列にするコードをご紹介していますが、そもそもコレクションで処理できないかを考えましょう。

Home » エクセルマクロ・Excel VBAの使い方 » Windowオブジェクト » 選択されているシートだけ処理する-SelectedSheetsプロパティ

「Windowオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.