アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルVBAで複数のシートを選択する場合、
Sheets(Array("AAA", "BBB", "CCC")).Select 
と書くと思いますが、マクロを回してみないことにはシート名や枚数が特定できない場合、どのように記述したらいいのでしょうか?
たとえば、新たに追加されたSheets(n)~Sheets(n+x)を選択するような場合です。
よろしくお願いします。

A 回答 (3件)

#2です。

#2のお礼に関して、
Sub test01()
n = 2
m = 3
Sheets(n).Select
For i = n + 1 To n + m - 1
Sheets(i).Select False
Next i
End Sub
でどうですか。
    • good
    • 0
この回答へのお礼

imogasiさん、いつもありがとうございます。
Sheets(i).Select Falseで、順次セレクトできるんですね!
これならわざわざシート名を配列に入れていかなくても、都度選択していけばいいということがわかりました。
ありがとうございました。

お礼日時:2006/06/10 22:01

Sub test01()


Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
MsgBox sh.Name
' 処理
Next
End Sub
でどうですか。
問題にしているある1つのシートは、処理を除外する場合がありますが、If文でシート名を
判別して、スキップしてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
For Nextは一番最初に考えたのですが、Sheets(n)~Sheets(n+x)に該当する場合、すべて選択するという処理の書き方が分からないのです。
よろしかったらご教示お願いできませんでしょうか?

お礼日時:2006/06/10 14:53

> 新たに追加されたSheets(n)~Sheets(n+x)を選択するような場合です。



要は、シート名の配列を渡せば良いわけで。
サンプルです。
Sub Test1()
Dim sh() As String
Dim i, n, x
n = 5
x = 2
ReDim sh(n To n + x)
For i = LBound(sh) To UBound(sh)
sh(i) = Sheets(i).Name
Next
Sheets(sh).Select
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
ReDim?また新たな疑問が湧いてきましたが、なんとか追加されたシートインデックスを(n To n + x)にいれて目的を達することができました。

お礼日時:2006/06/10 14:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています