- ベストアンサー
Excelのシートを束ねたい
Office 2007 Professionalを使用しています。 ファイルの管理上、ひとつのBookに膨大な数のシートを作成しているのですが、シートが多すぎて中身の整理が難しくなっています。 シート何枚かを束ねるような仕組みはないものなのでしょうか。 例えば、1年365日を管理する1つのBookがあるとして、シートが365枚あり、ひと月分を親シートと言いますかタブのようなものに束ねられればと考えています。 タブをダブルクリックするとひと月分のシートが見えるようになるとか…。
- みんなの回答 (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
お礼
ご回答ありがとうございます。 販売できそうな本格的なマクロまでお作り頂いて、感謝の言葉もありません。 このマクロのおかげで作業の効率化はもちろん、ファイルの安全運用まで可能となったと思います。 本当にありがとうございます。