• ベストアンサー

エクセルVBA 行のグループ化を外すマクロ

いつもお世話になります。 6行目から55行目までと、7以降の行から55行目までの2重にグループ化している行があり、現状は Rows("6:55").Rows.Ungroup Rows("6:55").Rows.Ungroup でグループ化を解除しているのですが、3重以上や、1重しかグループ化していないことも想定しておく必要があるのです。 このコードだと、2重以上のグループ化をしていない時にエラーが起こってしまうし、3重以上だと解除しきれないのですが、何重にグループ化していても、もしくはグループ化していなくてもエラーを起こさず解除できる方法はありますでしょうか?

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんばんは。 グループ化は使ったことはないのですが、 以下のコードをちょと試してみてください。 ------------------------------------------- Sub Test()  ActiveSheet.Rows("6:55").ClearOutline 又は  ActiveSheet.Cells.ClearOutLine End Sub ------------------------------------------- 外しましたらご容赦願います。(^^;;; 以上です。

7-samurai
質問者

お礼

どちらともビンゴでした(^○^) ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ベタな方法ですが。 エラー発生を判定基準にします。 Sub グループ化解除()   On Error Resume Next   Do While Err.Number = 0     Rows("6:55").Rows.Ungroup   Loop   Err.Clear End Sub

7-samurai
質問者

お礼

いつもお世話になります。お久しぶりです。 教えていただいた方法は、今回のみならず、様々なシーンで使えそうですね。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBA 行列のグループ化判定方法

    エクセル(2003)VBAにて シートの行、列のグループ化をされているものはグループを解除したいのですが、 グループ化されていないものに解除命令をだすと 当然エラーが出ます。 Selection.Rows.Ungroup Selection.Columns.Ungroup グループ化されているかを判別する手段はありますか?

  • EXECLマクロでshapeがグルーフ゜化されてるかどうかを調べる方法は?

    全shape中のテキストを処理したいので一旦図形のグループ化を解除したいのですが、ヘルプに出ている方法で全部をselectしungroupしようとするとエラーになってしまいます。 そこで、一つづつungroupしようと思います。グループ化されてないものにungroupしようとするとエラーとなるので、グループ化されているかどうかをチェックしたいのですが、方法が見つかりません。どなたかご存知でしょうか?

  • RangeのGroupについて(ExcelVBA)

    Excel(2003)のVBAで、RangeオブジェクトのGroupメソッドについて質問です。 Rows(範囲).Groupで、行のグループ化ができます。 最大7層まで入れ子構造に出来るようです。 質問ですが、次の様なものです。 1)複数の階層が設定されている場合に一気にGroupを解除する方法  ・Rows.Ungroupでは、1層目は、一気に解除されるが、2層目以後が残る 2)複数の階層が設定されている場合に、任意の層のみ解除する方法  ・例えば、第2層目のGroupのみ解除するには、第2層が設定されている行を選択して   Selection.Rows.Ungroupを実行すれば、解除出来るが、第2層のみ一気に解除する方法はありますか? 3)任意のRangeが、どのGroupに属しているのか?判別する方法 4)そもそもGroupのコレクションはあるのでしょうか? 説明が悪いので、わかりにくいと思いますが、よろしくお願いいたします。

  • エクセル2007VBAでUngroupができない

    エクセル2003で作ったvbaコード付きのファイルをエクセル2007で開いたときに Cells.Rows.Ungroup の部分がエラーになってしまいます。 エラー内容は 「実行時エラー1004 RangeクラスのUngroupメソッドが失敗しました」 です。 エクセル2003では問題なく動いていたのになぜ2007ではだめなのでしょうか? vba画面でデバッグしてもコンパイルエラーにはなりません。 アドバイスよろしくお願いします。

  • Excel VBA: 複数行を選択したらエラーにしたい?

    お世話になります。 複数行にわたって選択しているときに実行するとエラーメッセージを出したいとします。現状では、 If Selection.Rows.Count <> 1 Then subMsgBox "You are selecting two or more rows" Exit Sub End If としていますが、これではドラッグで連続した行を選択している場合には正しくエラーになりますが、Ctrlクリックでポンポンと飛ばし飛ばしクリックしている場合はエラーになりません。 If Selection.Cells.Count <> 1 Then だと同じ行の複数個所を選んだ場合もエラーになってしまいます。 If Selection.Cells.EntireRow.Count <> 1 Then If Selection.Cells.EntireRow.Rows.Count <> 1 Then でもCtrl+クリックの場合にダメです。 どうしたらいいでしょうか。 よろしくお願いします。

  • エクセル2010 VBA 行削除

    特定列が空白であれば行削除をしたいのですが、下記コードでうまく削除は出来るのですが、応答なしになったり、とても遅いのですが、もう少し早く処理出来る方法はありますか? E列が空白であれば行削除をしたいのですが・・ With Range("E13", Cells(Rows.Count, 5).End(xlUp)) .AutoFilter Field:=1, Criteria1:="" On Error Resume Next Set rng = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible) If Err.Number = 0 Then rng.EntireRow.Delete On Error GoTo 0 .AutoFilter End With

  • エクセルマクロ行削除

    エクセル2013です。 以下の行削除マクロを作りました。 取得した 最終行が20行目として 最終列がZ列として セル Z20 の値が 1以上なら問題なく動作するのですが セル Z20 の値が 0 だとループして終了しません。 どこを修正しても、思うように動作しません。 どこを修正すれば、いいのでしょうか? よろしくお願いします。 Sub 行削除() Dim 最終行 Dim 最終列 Dim 対象行 最終列 = Cells(8, Columns.Count).End(xlToLeft).Column '8行目の最終列を取得 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得 Application.ScreenUpdating = False '画面切替停止 For 対象行 = 10 To 最終行 If Cells(対象行, 最終列) = 0 Then Rows(対象行).Delete 最終行 = 最終行 - 1 '削除により最終行が1行減ったので最終行の値を1行減らす 対象行 = 対象行 - 1 '削除により対象行が1行繰り上がったので対象行の値を1行減らす Else End If Next 対象行 Application.ScreenUpdating = True '画面切替停止解除 End Sub

  • エクセル2000のグループ化について

    こんにちは。いつもお世話になっております。 今回はエクセル2000でグループ化したワードアートについてです。 ワードアートで作成した画像+文字をグループ化したときに、その部分の文字だけ編集したい場合、エクセル2003ならグループ化を解除せずにそのまま対象のワードアートの文字をダブルクリックするだけで編集できますが、2000ではどうしても編集できません。 2000でも同じようにグループ化を解除せずに文字を編集出来る方法はありませんでしょうか?

  • 【VBA】 行非表示で、1度エラー 【Excel】

    いつもお世話になっております。 Excel2003を使用しています。 シート TESTに、 グラフ20個以上(2行目から) ボタン2つがあります。(1行目、A1とH1) ActiveSheet.Rows("2:20").Hidden = True 上記を実行すると、 ”型が一致しません” というエラーが出ます。 エラーが出て「F8」を押すと、進む事が多いです。 「F5」を押した場合でも、進む事が多いです。(たぶん関係ないですが) ブレークポイントなどを設定しているわけでもないのに、 毎回上記プログラムの部分で 「型が一致しません」 というエラーで一旦止まってしまいます。 何か改善方法はありますでしょうか? プログラムの改善点も教えて頂けるとうれしいです。

  • マクロで行指定する

    いつもお世話になります。 しょうもない質問なので、過去の質問を見て解決しようとしていたのですが、40分ばかりで諦めた根性なしの7-samuraiです。 d = Activesheet.Range"A5").CurrentRegion.Rows.Countとうって、5行目から"d"までを選択したいのですが、その時の文が分かりません。 申し訳ないですが、宜しくお願い致します。

専門家に質問してみよう