エクセルのマクロでシートの選択について

このQ&Aのポイント
  • WinXP SP3で使用しているEXCEL 2003のマクロについて、目次以外のシートを選択する方法について教えてください。
  • 現在のマクロでは、目次以外のシートを全て選択することはできますが、シートの数が増えた場合にエラー終了してしまいます。
  • Arrayを使用せずに、目次以外のシートを全て選択する方法を教えてください。また、マクロはVBEで簡単に実行できる状態にしていただけると幸いです。
回答を見る
  • ベストアンサー

エクセルのマクロでシートの選択について

よろしくお願いします WinXP SP3でEXCEL 2003を使用しています ブック名がtest.xls シートが("目次", "1", "2", "3", "4", "5") とあります ここでは仮に"5"までシートがありますが本来は変数であり、n + 1のように扱いたいです 以下のマクロで"目次"以外の全てのシートを選択しました ~~~~~ Sub Macro1() Dim i As Integer i = 2 Sheets(i).Select For i = i To 6 Sheets(i).Select False Next i End Sub ~~~~~ このマクロですとArrayを使わずとも、"目次"以外のシートを選択できますが For i = i To 6 の6を7以上にするとエラー終了します そこで以下の条件にてシートの選択を行いたいのですが方法がわからず困っております 1・シートの数が多くても"目次"以外のシートを全て選択したいです 2・iがシートの数を超えた場合はエラー終了せず、マクロを終了させたいです 3・Sheets(Array( "1", "2", "3", "4", "5")).Select のようなマクロは組みたくないです 大変恐縮ですが、教えていただけますでしょうか できればマクロをVBEにコピー&ペーストするだけで実行できるような 状態にしていただきますと非常に幸いです 何卒、よろしくお願いいたします

noname#244288
noname#244288

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

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

For i = i To 6 を For i = i To sheets.count にしてください。

noname#244288
質問者

お礼

どうもありがとうございました できました

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Sub test01() MsgBox Sheets.Count End Sub (長々質問文を書いているが)Sheets.Count を知らないだけでは。 数える、掴むという観点から、VBAの概説書を読んで 智識を整理してはどうです。 Sub test02() For Each sh In Worksheets MsgBox sh.Name Next End Sub も便利です。

noname#244288
質問者

お礼

回答およびご指摘ありがとうございます おっしゃるとおりVBAの概説書を読んで勉強します ありがとうございました

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

Sheets(i).Select の意味はシート見出しにおける左からのシートの番号が1から始まってi 番目のシートを指すことになります。i=1という場合には最も左にあるシートを指すことになりますね。おそらく目次のシートがそうなのでしょう。 したがってお示しの式の場合にはシート見出しで左から2番目から6番目までが選択され作業グループに指定されることになりますね。6番目までのシートが存在しない場合にはエラーになってしまいますね。 ところでご質問の意味はおそらくシートの並び順を言っているのではなく、シート名が1から5までを作業グループにしたいということでしょう。その場合には次のようなマクロにすることがよいでしょう。 Sub Macro1() Dim i As Integer i = 1 Sheets(""& i ).Select For i = i To 5 Sheets(""& i ).Select False Next i End Sub 勿論シート名が1から5まで存在することが必要です。

noname#244288
質問者

お礼

回答どうもありがとうございました こちらもやってみたところ無事にできました

関連するQ&A

  • Excelマクロ シート名を変数で指定

    Excelマクロの初心者です。 Sheet1~50を、変数を用いて順に選択したく Dim i as Integer For i = 1 to 50 Sheets("Sheet"&i).Select Next i としたところ、 『実行時エラー'9':インデックスが有効範囲にありません』となってしまいます。 勉強不足なものでどこがいけないのか、どう修正すればよいかわからず困っています。 よろしくお願いします。

  • エクセル 複数シート検索のマクロ

    マクロ初心者です。 エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 よろしくご教示願います。

  • Excelマクロにてシートの削除を行いたいです。

    初めて投稿させて頂きます。 質問内容  Excelのマクロを使用して指定シート以外のシートの削除を行いたいです。 前条件  外部CSVファイルを取込み、データによってシートを追加して振り分けています。  再度マクロを実行した場合特定のシートを残し(フォーマット等)、他のシートを削除してからデータの振り分けを実施する予定です。 やってみた事  下記の様に書いて実施してみたのですがエラーとなってしまいます。 Sub Clear()   Application.DisplayAlerts = False   For I = 1 To Worksheets.Count     If (Worksheets(I).Name <> "sheet") Then       Sheets(Worksheets(I).Name).Select       ActiveWindow.SelectedSheets.Delete     End If   Next I   Application.DisplayAlerts = True End Sub 上記の書き方だと1シート毎削除なので、選択したシートを一括で削除出来るとうれしいです。 どなたかご存知の方お願いします。

  • Excel エクセル マクロ VBA

    エクセルマクロで指定したシート(2シート目)から末尾のシートまで印刷したい場合、下記のようなコードで良いでしょうか? Sub Sample1() Dim i As Long For i = 2 To Sheets.Count ActiveWorkbook.Sheets(i).Select (Replace:= False) Next i Activesheet.PrintOut Preview:=True End Sub

  • Excelマクロ 複数のシートそれぞれで計算

    マクロの勉強を始めて間もない初心者です。 手持ちの解説書やネットで探してみたのですが解決できなかったので質問させてください。 計算式を手打ちで入力する手間を省くため、コードを書きました。 (不要かもしれませんが、一応記してみます。) sub 計算() dim 行番号 as integer for 行番号 = 10 to 46 cells(行番号,4).select with activecell .value=.offset(-2,0).value-.offset(-1,0) .offset(1,0).select end with next end sub マクロを実行すると、1枚目のシートでのみ、この計算がなされます。 が、私はこの計算を、複数の(もしくは全ての)シートで行いたいと考えています。 シートのフォーマットは全く同じで、入力してある数値が違うだけです。 シートが20枚以上あり、1枚ずつ選択して同じコードを書くには、コピー&ペーストを使うにしてもしんどいので、検索してみたのですが。。 調べて試してみた sheets.select や、 sheets(array("シート名1","シート名2"…).select では、セル値が異なるにもかかわらず、シート1の計算結果が以降のシートにも反映されてしまいました。 コードは共通でも各シートで独立した計算結果を導くには、どうすれば良いのでしょうか? お詳しい方、ご教示くださいますようよろしくお願い致します。

  • A~B間にある全てのシートを選択する記述を教えてください

    VBAの基本がまったくわかっていない初心者です。 マクロで、あるブックの左から3つ目のシートが“A”、末尾が“B”という名前のシートで、そのAからB間のシート全てを選択したいのですが、方法が分かりません。自動記述で選択すると、 Sheets(Array("Sheets1","Sheets2")).Select などとなりますが、シートの数も名前も不定ですので名前では指定できません。 このサイトなどで調べて Sheets(Sheets(3):Sheets.Count).Select などとやってみましたがエラーになります。 丸投げで恐縮ですが、記述のしかたを教えていただけないでしょうか。 よろしくお願いいたします。

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • エクセル 複数シート検索のマクロ

    以前、下記の質問をさせてもらい ---- 以下 --------------- エクセルの文字列検索で、複数シートにまたがった場合のマクロ記述を知りたいです。 シートaとシートbの選択は下記となると思いますが、 Sub Macro1() Sheets(Array("a", "b")).Select Sheets("a").Activate End Sub その後で、検索窓([ctrl]+[f])を表示させたいのですが・・・。 ---- 以上 --------------- に対して、以下のご回答を受けたのですが、 Sub TEST01() Sheets(Array("a", "b")).Select Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub うまく行く場合もあるのですが(と思い解決で締め切ってしまいました)、大抵の場合(該当文字列が複数あるとき?)にフリーズしてしまいます。 上記マクロだと、「検索する文字列」タイトルで[次を検索][閉じる][置換]ボタンが表示され(古いOffice?)、 マクロを使用しない通常の[ctrl]+[f]だと、「検索と置換」タイトルで[検索]と[置換]タグが表示されます(Office2003)。 また、マクロを実行した後は通常の[ctrl]+[f]、[編集]-[検索]が効かなくなってしまいます。 この部分はフリーズとは無関係かもしれませんが・・・。 フリーズしないマクロの記述と、出来れば検索終了後に特定のシートに戻るようなマクロも追加したいです。 また、別件になりますが、ファイルを開いた時に必ず特定のシートに位置づけられる事ができればそれもご教授願いたいです。

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?

  • マクロ 戻るボタンを押したらシートの1枚目に戻る

    各シートに「戻る」というボタンを作りましたが、 「ボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。 下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。 このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような 指示を入れたいです。 分かる方いましたら、お願いします。。。 ※下記のマクロは以前ご回答いただいたマクロを引用したものです。 /////////////////////////////////// Sub 戻るボタン設置() Dim Sht As Worksheet For Each Sht In Worksheets If Not Sht.Name = Worksheets(1).Name Then With Sht For i = 1 To 1 '幅140、高さ20のボタンを追加 .Buttons.Add(900 * i, 10, 140, 20).Text = "戻る" Next i End With End If Next Sht Sheets(1).Select End Sub

専門家に質問してみよう