過去ログ

                                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行をグループ化し、全てを表示させる、全てを非表示にするというような事をしたいのです。もちろん、一つ一つのグループ化ボタンは表示させたままで・・・。

それか、同じような事ができる他の方法があるでしょうか?

いろいろ調べたのですが、手がかりもつかめないままで、かなり困っています。
どうか、教えて下さい。
 ───────────────────────────────────────  ■題名 : Re:グループ化のマクロについて  ■名前 : rin-bon  ■日付 : 02/10/10(木) 17:49  -------------------------------------------------------------------------
   すみません。
私の質問の内容が分かり難いのかもしれませんね・・・。

  -----------------
  A
  -----------------    
  B 
  -----------------
  C
  -----------------
  A’
  -----------------
  B’ 
  -----------------
  C’
  -----------------
  A''
  -----------------
  B'' 
  -----------------
  C''
  -----------------

このように、3行一組のものです。
それで、例えば、AとBを選んで「データ」→「グループとアウトラインの設定」→「グループ化」とすれば、左にボタンが出てきて、+にすれば表示され、-にすれば、見えなくなります。一度にするというのは、この機能の中にありました。

ですが、この機能をコードではどう書くのかが分かりません。
かなり、困っています。
どうかどうか、教えていただけないでしょうか?
 ───────────────────────────────────────  ■題名 : Re:グループ化のマクロについて  ■名前 : Jaka  ■日付 : 02/10/11(金) 9:39  -------------------------------------------------------------------------
   おはようございます。
グループ化だけだったらマクロ記録をちょっといじって可能だったんですが、
表示非表示に関しては、マクロ記録の癖にエラーになって動かなかったんで、
こんな風にしてみました。
非表示の時に見えているデータ行を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
 ───────────────────────────────────────  ■題名 : Re:グループ化のマクロについて  ■名前 : rin-bon  ■日付 : 02/10/15(火) 9:52  -------------------------------------------------------------------------
   ありがとうございます。
4連休だったもので、お礼が遅くなって申し訳ありませんでした。
マクロについては、思っていたようなものが出来ました。

本当にありがとうございました。
また、なにかありましたら助けて下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 202