• ベストアンサー

Excelのシートを束ねたい

Office 2007 Professionalを使用しています。 ファイルの管理上、ひとつのBookに膨大な数のシートを作成しているのですが、シートが多すぎて中身の整理が難しくなっています。 シート何枚かを束ねるような仕組みはないものなのでしょうか。 例えば、1年365日を管理する1つのBookがあるとして、シートが365枚あり、ひと月分を親シートと言いますかタブのようなものに束ねられればと考えています。 タブをダブルクリックするとひと月分のシートが見えるようになるとか…。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>ひと月分を親シートと言いますかタブのようなものに束ねられればと考えています。タブをダブルクリックするとひと月分のシートが見えるようになるとか…。 月ごとのタブのシートを作ってもいんですが、さらにシートが増えるし、タブのシートを管理する必要もあります。 シートを1枚挿入(目次というシート名)して、そこから「月」をダブルクリックすればその月だけを表示するようにしてみました。前提として、各シート名は「20140723」のように年月日8桁として、左から6桁で表示・非表示の判定をしています。 目次のシートの「年」、「月」は数字です。書式設定で「年」、「月」を見せています。 下のプロシージャは目次のシートのコードウィンドウに貼り付けます。 「月」をダブルクリックすればその月のシートのみが表示されます。(当方、Excel2010です) Const MokujiSheetName = "目次"  '←ココから Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Dim ws As Worksheet  'ワークシート   Dim ym As String   '年月      If ActiveSheet.Name = MokujiSheetName Then     If Target.Count = 1 Then       If Not Application.Intersect(Range("C2:C13"), Target) Is Nothing Then         ym = Range("B2") & Right("0" & Target, 2)         For Each ws In Worksheets           If Left(ws.Name, 6) = ym Then             ws.Visible = True           ElseIf ws.Name <> MokujiSheetName Then             ws.Visible = False           End If         Next       End If     End If   End If      Cancel = True End Sub

saruchan002
質問者

お礼

ご回答ありがとうございます。 販売できそうな本格的なマクロまでお作り頂いて、感謝の言葉もありません。 このマクロのおかげで作業の効率化はもちろん、ファイルの安全運用まで可能となったと思います。 本当にありがとうございます。

関連するQ&A