質問:
エクセルのマクロで、複数のシートを選択するプログラムを記述したいのですが、
シート数に依存しないよう、一般化して記述するにはどうしたらよいか分かりません。
可能でしょうか?
例えば、あるBookのSheet1〜Sheet3までをまとめて選択したければ、
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
という記述で可能だと思います。しかしこの記述では当然、Sheet1〜3
の選択しか出来ません。そこで、選択する先頭のシートをi,
最後のシートをjとし、このiとjを用いてシートの選択を行うような
記述が出来たらと考えています。選択するシートは連続していると
限定して構いません。(1〜3、2〜4のように連続している。
2・4・6の様に飛び飛びではない。)
動作が遅くなるような記述でも全く構いません。
ご存知の方宜しくお願い致します。
答え:
シート番号ではなくて、シート名がSheet1,Sheet2・・・となっていて、このSheetの後ろの番号を指定するわけですね?
サンプルとしてはこんな感じでしょうか。(2〜4を選択する場合)
Public Sub SheetsSelect()
Dim i As Integer, j As Integer
Dim k As Integer
Dim SheetNames() As String
i = 2
j = 4
ReDim SheetNames(i To j)
For k = i To j
SheetNames(k) = "Sheet" & k
Next
Sheets(SheetNames).Select
End Sub
補足の質問:
選択したいシートを配列に入れて、その配列をSheets().Selectに渡してあげればよかったんですね。ありがとうございました!この質問・回答は役に立ちましたか?
エクセルのマクロで、複数のシートを選択するプログラムを記述したいのですが、
シート数に依存しないよう、一般化して記述するにはどうしたらよいか分かりません。
可能でしょうか?
例えば、あるBookのSheet1〜Sheet3までをまとめて選択したければ、
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
という記述で可能だと思います。しかしこの記述では当然、Sheet1〜3
の選択しか出来ません。そこで、選択する先頭のシートをi,
最後のシートをjとし、このiとjを用いてシートの選択を行うような
記述が出来たらと考えています。選択するシートは連続していると
限定して構いません。(1〜3、2〜4のように連続している。
2・4・6の様に飛び飛びではない。)
動作が遅くなるような記述でも全く構いません。
ご存知の方宜しくお願い致します。
答え:
シート番号ではなくて、シート名がSheet1,Sheet2・・・となっていて、このSheetの後ろの番号を指定するわけですね?
サンプルとしてはこんな感じでしょうか。(2〜4を選択する場合)
Public Sub SheetsSelect()
Dim i As Integer, j As Integer
Dim k As Integer
Dim SheetNames() As String
i = 2
j = 4
ReDim SheetNames(i To j)
For k = i To j
SheetNames(k) = "Sheet" & k
Next
Sheets(SheetNames).Select
End Sub
補足の質問:
選択したいシートを配列に入れて、その配列をSheets().Selectに渡してあげればよかったんですね。ありがとうございました!この質問・回答は役に立ちましたか?
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.