• ベストアンサー

EXCEL VBA 複数シート選択の方法(VBA)

エクセルのシート選択方法について教えてください。 選択対象シート数は4つ(シート名は、「りんご」「みかん」「ばなな」「すいか」とします) シート名「表紙」のセルは A1:りんご A2:みかん A3:ばなな A4:すいか となっており、使用者はB1~B4セルに「○」「×」を入力し、 「○」となっているシートのみ選択出来るようにしたい。 シート名が「sheet1~4」のように連続するシート名である場合や、 ひとつの条件に当てはまるシートを複数選択する方法は 他サイトでも見つけることが出来たのですが、このような場合は どのようにすれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

murio
質問者

お礼

こんばんは。 早速の追加回答をして頂き、本当にありがとうございます!! やりたかった事が出来る様になりました。 早速仕事で活用させて頂いております。 ここ半月ほど悩んで、いろいろネットで検索しトライして 駄目だったので、途方にくれていたのですが、「Wendy02」さんの おかげで大変助かりました!! 本当にありがとうございました。。。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 複数のシートの選択そのものよりも、その後、どうするかによっても条件が変わってくるように思いますね。 たとえば、こんな風にすれば、複数選択が可能です。 しかし、この後、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

murio
質問者

お礼

こんばんは、早速トライさせて頂きました。 複数シートを任意で選択することが出来ました。 ありがとうございます。 もうひとつ教えていただけますでしょうか? 現段階では良いのですが、今後シート数が膨大になり 使用者が選択したシートを確認するのが大変になると思い この後の処理としては、選択されたシートを「新しいブック」にコピーしたいと思います。 教えていただいたマクロの最後に、 Activesheet.Copy なんて追記すれば簡単に出来るかな?なんて思っていましたが、 「表紙」シートだけコピーされてしまいました。 複数シートなので、Array関数を使うのかな?とも思いましたが、 選択されるシート数(シート名)が毎回違う為、 また、そこで悩んでしまいました。 上記のような事は、VBAで対応出来るのでしょうか? お時間のあるときで結構ですので、教えていただけないでしょうか? 以上、宜しくお願いいたします。

noname#79209
noname#79209
回答No.1

これが参考になりませんか? http://dreamy.boy.jp/tec3_4.htm 上記では手動での設定ですが、マクロの記録をすれば作れるでしょう。

murio
質問者

お礼

さっそくの回答ありがとうございます。 質問の書き方が良くなったのですが、シート表紙のA列にはたくさんのデータがあり、使用者が任意で○をつけたシートを選択するのですが、 選択するシートが毎回違う為困っていました。 この方法も一度トライしてみますね。 ありがとうございましした。

関連するQ&A