- ベストアンサー
シートの枚数について
VBA初心者なので教えてください。 シートの数を シートの枚数 = ActiveWorkbook.Worksheets.Count で数えていますが、ブックに表示されている数は12シートなのに 26となってしまいます。 プロジェクトエクスプローラーというのを開いてみると シートが26個ありますが コードが何も書かれていないシートを削除するにはどうしたらいいんでしょうか。 見えているシートのみにすれば 上の シートの枚数も12になるのでしょうか… 教えてください!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
関連する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
- 締切済み
- Visual Basic
- シート作成毎の削除方法
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
- ベストアンサー
- Visual Basic
- VBA 表示してあるシートのみ作業グループにしてC3に文字を記入。
VBA 表示してあるシートのみ作業グループにしてC3に文字を記入。 お世話になっております。 VBAにて表示してあるシートのみ作業グループにしてC3に文字を入れるマクロをくみたいのですが 作業グループのところが上手くいきません。 下記のコードに何を加えれば作業グループになるのでしょうか? *注意点* 1)作業グループにするシートはブックによって枚数が違います。 2)シートを非表示にしているものもあります。 宜しくお願い致します。 Worksheets.Select ActivateCells(1, 3).FormulaR1C1 = Format(Date, "m""月分")
- ベストアンサー
- その他MS Office製品
- 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は削除したいシートの名前が入ります。
- ベストアンサー
- Visual Basic
- ブック間のシート移動
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初心者なのでコードを教えていただけると助かります。 よろしくお願いします!
- ベストアンサー
- その他MS Office製品
- 複数のシートを別ブックにコピーして保存したい
毎回、シート数が変動する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
- ベストアンサー
- その他MS Office製品
- 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
- ベストアンサー
- Visual Basic
お礼
教えていただいたとおり、シートが非表示になっていたようです。 シートも非表示にできるのですね。 勉強になりました。 すばやい解答でとても助かりました。 ありがとうございました。