Page 202 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼グループ化のマクロについて rin-bon 02/10/10(木) 10:21 ┗Re:グループ化のマクロについて rin-bon 02/10/10(木) 17:49 ┗Re:グループ化のマクロについて Jaka 02/10/11(金) 9:39 ┗Re:グループ化のマクロについて rin-bon 02/10/15(火) 9:52 ─────────────────────────────────────── ■題名 : グループ化のマクロについて ■名前 : rin-bon ■日付 : 02/10/10(木) 10:21 -------------------------------------------------------------------------
はじめて投稿します。よろしくお願いします。 エクセルで、かなり巨大な表を作っています。 3行で1レコードなのですが、そのうちの一番上の1行だけを見たい時に、 手作業であれば、下の2行を「データ」→「グループとアウトラインの設定」→「グループ化」とし、ボタンをクリックすれば、その2行が画面上は消え、もう一度押せばでてきますが、それをマクロ化したいのです。 出来れば、一つか二つのボタンで、全てのレコードの下2行をグループ化し、全てを表示させる、全てを非表示にするというような事をしたいのです。もちろん、一つ一つのグループ化ボタンは表示させたままで・・・。 それか、同じような事ができる他の方法があるでしょうか? いろいろ調べたのですが、手がかりもつかめないままで、かなり困っています。 どうか、教えて下さい。 |
すみません。 私の質問の内容が分かり難いのかもしれませんね・・・。 ----------------- A ----------------- B ----------------- C ----------------- A’ ----------------- B’ ----------------- C’ ----------------- A'' ----------------- B'' ----------------- C'' ----------------- このように、3行一組のものです。 それで、例えば、AとBを選んで「データ」→「グループとアウトラインの設定」→「グループ化」とすれば、左にボタンが出てきて、+にすれば表示され、-にすれば、見えなくなります。一度にするというのは、この機能の中にありました。 ですが、この機能をコードではどう書くのかが分かりません。 かなり、困っています。 どうかどうか、教えていただけないでしょうか? |
おはようございます。 グループ化だけだったらマクロ記録をちょっといじって可能だったんですが、 表示非表示に関しては、マクロ記録の癖にエラーになって動かなかったんで、 こんな風にしてみました。 非表示の時に見えているデータ行をWクリックするとその下2行が表示されます。 同じデータ部を右クリックすると非表示になります。 標準モジュール Sub 非表示() AEndRow = Cells(Rows.Count, "A").End(xlUp).Row StartR = 2 Application.ScreenUpdating = False For i = StartR To AEndRow Step 3 Rows(i + 1 & ":" & i + 2).EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub Sub 表示() AEndRow = Cells(Rows.Count, "A").End(xlUp).Row StartR = 2 Application.ScreenUpdating = False For i = StartR To AEndRow Step 3 Rows(i + 1 & ":" & i + 2).EntireRow.Hidden = False Next Application.ScreenUpdating = True End Sub 表が書いてあるシートモジュール Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) CLast = Cells(1, Columns.Count).End(xlToLeft).Column If (Target.Row - 1 = 2 Or Target.Row Mod 3 = 2) And _ (Target.Column >= 1 And Target.Column <= 6) And _ (Target.Row <= Cells(Rows.Count, "A").End(xlUp).Row) And _ (Target.Column <= CLast) Then Application.ScreenUpdating = False Cancel = False Rows(Target.Row + 1 & ":" & Target.Row + 2).EntireRow.Hidden = False 'DoEvents Cancel = True Application.ScreenUpdating = True End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) CLast = Cells(1, Columns.Count).End(xlToLeft).Column If (Target.Row - 1 = 2 Or Target.Row Mod 3 = 2) And _ (Target.Column >= 1 And Target.Column <= 6) And _ (Target.Row <= Cells(Rows.Count, "A").End(xlUp).Row) And _ (Target.Column <= CLast) Then Application.ScreenUpdating = False Cancel = False Rows(Target.Row + 1 & ":" & Target.Row + 2).EntireRow.Hidden = True 'DoEvents Cancel = True Application.ScreenUpdating = True End If End Sub |
ありがとうございます。 4連休だったもので、お礼が遅くなって申し訳ありませんでした。 マクロについては、思っていたようなものが出来ました。 本当にありがとうございました。 また、なにかありましたら助けて下さい。 |