- ベストアンサー
EXCEL VBA 複数シート選択の方法(VBA)
エクセルのシート選択方法について教えてください。 選択対象シート数は4つ(シート名は、「りんご」「みかん」「ばなな」「すいか」とします) シート名「表紙」のセルは A1:りんご A2:みかん A3:ばなな A4:すいか となっており、使用者はB1~B4セルに「○」「×」を入力し、 「○」となっているシートのみ選択出来るようにしたい。 シート名が「sheet1~4」のように連続するシート名である場合や、 ひとつの条件に当てはまるシートを複数選択する方法は 他サイトでも見つけることが出来たのですが、このような場合は どのようにすれば良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 #2の回答者です。 >Activesheet.Copy >なんて追記すれば簡単に出来るかな?なんて思っていましたが、 >「表紙」シートだけコピーされてしまいました。 考え方は、それで良いと思いますが、オブジェクトの取り方が違います。 ActiveWindow.SelectedSheets を使います。 ActiveWindow.SelectedSheets.Copy とすると、表紙も一緒にコピーされてしまうので、以下のように、flg(フラグ)を入れてみました。 ----------------------------------------- Sub TestSample2() Dim c As Range Dim flg As Boolean On Error Resume Next flg = True ThisWorkbook.Activate '念のために入れておきます。 With Worksheets("表紙") For Each c In .Range("B1:B4") If c.Value Like "○*" Then Worksheets(c.Offset(, -1).Value).Select flg flg = False End If Next c End With With ActiveWindow.SelectedSheets If .Count > 0 Then .Copy End If End With '元のシートに戻る場合 'Application.Goto ThisWorkbook.Worksheets("表紙").Range("A1") End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 複数のシートの選択そのものよりも、その後、どうするかによっても条件が変わってくるように思いますね。 たとえば、こんな風にすれば、複数選択が可能です。 しかし、この後、VBAでの処理というのは、かなり特殊なテクニックが必要になってしまいます。 '------------------------------ Sub TestSample() Dim c As Range On Error Resume Next With Worksheets("表紙") For Each c In .Range("B1:B4") If c.Value Like "○*" Then Worksheets(c.Offset(, -1).Value).Select False End If Next c End With End Sub
お礼
こんばんは、早速トライさせて頂きました。 複数シートを任意で選択することが出来ました。 ありがとうございます。 もうひとつ教えていただけますでしょうか? 現段階では良いのですが、今後シート数が膨大になり 使用者が選択したシートを確認するのが大変になると思い この後の処理としては、選択されたシートを「新しいブック」にコピーしたいと思います。 教えていただいたマクロの最後に、 Activesheet.Copy なんて追記すれば簡単に出来るかな?なんて思っていましたが、 「表紙」シートだけコピーされてしまいました。 複数シートなので、Array関数を使うのかな?とも思いましたが、 選択されるシート数(シート名)が毎回違う為、 また、そこで悩んでしまいました。 上記のような事は、VBAで対応出来るのでしょうか? お時間のあるときで結構ですので、教えていただけないでしょうか? 以上、宜しくお願いいたします。
これが参考になりませんか? http://dreamy.boy.jp/tec3_4.htm 上記では手動での設定ですが、マクロの記録をすれば作れるでしょう。
お礼
さっそくの回答ありがとうございます。 質問の書き方が良くなったのですが、シート表紙のA列にはたくさんのデータがあり、使用者が任意で○をつけたシートを選択するのですが、 選択するシートが毎回違う為困っていました。 この方法も一度トライしてみますね。 ありがとうございましした。
お礼
こんばんは。 早速の追加回答をして頂き、本当にありがとうございます!! やりたかった事が出来る様になりました。 早速仕事で活用させて頂いております。 ここ半月ほど悩んで、いろいろネットで検索しトライして 駄目だったので、途方にくれていたのですが、「Wendy02」さんの おかげで大変助かりました!! 本当にありがとうございました。。。