• ベストアンサー

シートの枚数について

VBA初心者なので教えてください。 シートの数を シートの枚数 = ActiveWorkbook.Worksheets.Count で数えていますが、ブックに表示されている数は12シートなのに 26となってしまいます。 プロジェクトエクスプローラーというのを開いてみると シートが26個ありますが コードが何も書かれていないシートを削除するにはどうしたらいいんでしょうか。 見えているシートのみにすれば 上の シートの枚数も12になるのでしょうか… 教えてください!

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

  • ベストアンサー
  • nitorin
  • ベストアンサー率55% (11/20)
回答No.2

恐らくシートが非表示になっているのですね。 こんな感じで。 http://www.relief.jp/itnote/archives/000474.php であれば、下記を参考にしてください。 Sub Macro1() Dim objSH As Worksheet ' 処理シート Dim i As Integer i = 0 For Each objSH In ActiveWorkbook.Worksheets If objSH.Visible = xlSheetVisible Then i = i + 1 End If Next objSH Debug.Print i End Sub

miz_k
質問者

お礼

教えていただいたとおり、シートが非表示になっていたようです。 シートも非表示にできるのですね。 勉強になりました。 すばやい解答でとても助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

「見えていないシートを削除したい」と言うことですか? それとも、「見えているシートだけカウントしたい」と言うことですか? >コードが何も書かれていないシートを削除するにはどうしたらいいんでしょうか。 コード(何らかの文字)の有無と言う判断は、VBAでコードモジュールにアクセスしないと判断できません。 シートの削除だけなら数行のコードで削除可能です。 非表示になっているシートは本当に削除しても構わない物なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel2010 VBA終了時に強制終了する

    Excel2003、2007で実行した場合は正常終了するが Excel2010で実行するとVBA終了時に強制終了します。 処理は、マクロありブックからマクロなしブックを作成するために、 新規ブックを作成しマクロありブックからシートを移動する処理です。 VBA起動は、フォームコントロールから行っています。 VBA終了時に(End Sub)後にEXCELがなぜか強制終了します。 (Microsoft Excel は動作を停止しました。のメッセージが表示される) なお、 ・フォームコントロールから実行した場合はEXCELが強制終了し、   デバックモードで実行した場合は強制終了しません。  ・マクロありファイルの種類:Excel 97-2003ブック  ・★★★のソースが含まれていると、Excelが強制終了します。 以下、ソース。 Sub ファイル保存()   'マクロなしファイルを作成 CreateNoMacroBook End Sub '←ここで異常終了が発生する。 Sub CreateNoMacroBook() Dim fname As String Dim ns As Integer Dim cnt As Integer Dim i As Integer 'マクロありブックの名前を取得 fname = ActiveWorkbook.Name 'マクロありブックのシート数を取得 cnt = ActiveWorkbook.Worksheets.Count 'すべてのシートをMoveするとエラーになるのでシートを追加 Worksheets.Add After:=Worksheets(Worksheets.Count) '新規ブック作成時のデフォルトのシート数を保管 ns = Application.SheetsInNewWorkbook '新規ブック作成時のシート数を変更 Application.SheetsInNewWorkbook = 1 '新規ブック作成 Workbooks.Add '新規ブック作成時のデフォルトのシート数に戻す Application.SheetsInNewWorkbook = ns 'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動 For i = 1 To cnt Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1")  '★★★ Next i '表示用に新規ブックの一枚目のシートをアクティブにする Workbooks(Workbooks.Count).Worksheets(1).Activate Application.DisplayAlerts = False '新規ブックのデフォルトシート"Sheet1"を削除する Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete Workbooks(Workbooks.Count).Activate Application.DisplayAlerts = True End Sub

  • シート作成毎の削除方法

    30枚シートを作成し5シート毎に新規ブックで保存をし、アクティブシートに新規で保存した分は 削除し、新たに5シート毎に新規ブックで保存し。。を繰り替えし30枚シートを6ブックに分けたいのですが うまくいきません。 初めにインデックスを作成しているのでワークシートa以降から5シート毎に削除したいのですが・・ 下記のプログラムをループの中に入れて実行させたいのですが、'★からの命令でaシート以降5シート毎に削除 したいのですが削除すらできません。。 何かアドバイスがありましたらお願い致します。               list_cnt = list_cnt + 1 If list_cnt = 5 Then ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "【●●】分析資料.xls" ’★ ActiveWorkbook.Worksheets.Delete After:=Worksheets("a") End If

  • VBA 表示してあるシートのみ作業グループにしてC3に文字を記入。

    VBA 表示してあるシートのみ作業グループにしてC3に文字を記入。 お世話になっております。 VBAにて表示してあるシートのみ作業グループにしてC3に文字を入れるマクロをくみたいのですが 作業グループのところが上手くいきません。 下記のコードに何を加えれば作業グループになるのでしょうか? *注意点* 1)作業グループにするシートはブックによって枚数が違います。 2)シートを非表示にしているものもあります。 宜しくお願い致します。 Worksheets.Select ActivateCells(1, 3).FormulaR1C1 = Format(Date, "m""月分")

  • VBAで一番後尾のシート見出しの色を変更したい

    WIN XP エクセル2003 BOOK内の一番後尾のシート見出しの色を変更したいのですが 下記コードでは見出しの色が変わりません。 何処が間違っているのかわかりません。ご教授お願い致します。 Sub シート見出し色変更() Dim N As Integer Dim sh As Worksheet N = ActiveWorkbook.Worksheets.Count Worksheets(N).Activate Set sh = ActiveSheet sh.Tab.ColorIndex = 3 Worksheets(1).Select End Sub

  • VBAで別ブックのシートを指定して削除したい。

    VBAで別ブックのシートを指定して削除したい。 エクセルでVBAを使用して、別ブックのシートを削除するアプリを作成しています。 これらのマクロを記述するエクセルとは別ブックのシートを削除したいです。 以下の記述だと、削除がされないようなのですがどのように記載したら 別ブックのシートを削除することが可能でしょうか。 エラー等は出ません。また、別ブックの情報も取ってこれているようですが、 削除ができません。。 どなたか教えてください。 'Excelを起動し、ファイルを開く Set xl = CreateObject("Excel.application") xl.Workbooks.Open fileName:=fileFullPath, ReadOnly:=False, IgnoreReadOnlyRecommended:=True '※fileFullPathがオープンするエクセルファイルです。 '"一覧"シートの1列目に「公開時削除」という文字が入っている行の2列目のテーブル名を取得 'シートの削除 Application.DisplayAlerts = False xl.ActiveWorkbook.Worksheets(deleteTableName).Delete   Application.DisplayAlerts = True   '※deleteTableNameは削除したいシートの名前が入ります。

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • VBA シートの削除について

    VBAのコードの書き方について質問があります。 コマンドボタンをクリックした時、シート1~シート4を削除をしたいのですが、 シート1~シート4が存在するかはその時の状況で異なります。 シート1が存在し、シート2~4が存在しないのであればシート1だけ削除する場合もあれば シート1~シート4がすべて無い場合もあります。 いずれのケースにしてもボタンクリック後は”シートを削除しました”のメッセージを 表示させたいのですが、どうコードを書けばよいでしょうか? VBA初心者なのでコードを教えていただけると助かります。 よろしくお願いします!

  • 複数のシートを別ブックにコピーして保存したい

    毎回、シート数が変動するEXCELファイルの、表示されているシートのみ(非表示シート有)を、 別のブックにコピーして、セルの書式と値を貼付けし、 元ファイルのシート名と同じシート名を付けたいのですが、 どんなVBAを組めば良いでしょうか? 下記の様に作成してみましたが、ファイル自体がコピペされてしまう様で、 自分のイメージした通りに動きません・・・。 ご教授の程、宜しくお願いいたします。 Sub データ書き出し() Dim ws As Worksheet Dim i As Long With ActiveWorkbook i = Worksheets.Count For j = 1 To i ThisWorkbook.Worksheets(j).Cells.Copy .Worksheets(j).Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Next j Application.CutCopyMode = False .SaveAs "月別DATA_" End With End Sub

  • VBA 複数シート選択について

    Sub test() Dim i As Integer i = ActiveWorkbook.Worksheets.Count Worksheets(Array(2, i)).Select End Sub シート2とシートi の選択ではなく、2~iまでの複数シート を選択するにはどのように書くのかご教示下さい。

  • シートのセルの数値がゼロ0のときは、印刷しない方法は

    Windows7 Excel2007でマクロ作成の初心者です。 シート数が20枚のブックがあります。セルH3には数値が入っています。 このセルが空欄もしくは数値0のときは、そのシートの印刷をやめたいです。 現在、印刷は以下のコードで実行しています。印刷を省略するにはどうしたらよろしいでしょうか。 Sub シートの印刷() Application.ScreenUpdating = False Dim i As Integer For i = 1 To Worksheets.Count - 9 Worksheets(i).Activate ActiveSheet.PageSetup.PrintArea = "$B$46:$U$89" ActiveWindow.SelectedSheets.PrintOut Next i Worksheets(1).Activate Application.ScreenUpdating = True End Sub

このQ&Aのポイント
  • タッチパッドのドライバーがインストールされていないため、使えません。ドライバーのダウンロード場所を教えてください。
  • タッチパッドが使用できない問題が発生しています。ドライバーのダウンロード先を教えてください。
  • NEC 121wareのパソコン本体のタッチパッドが利用できません。どこからドライバーをダウンロードできるのか教えてください。
回答を見る