Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: "leere" Spalten und Zeilen in Bereich ausblenden

"leere" Spalten und Zeilen in Bereich ausblenden
26.09.2012 21:26:21
Andreas
Hallo,
ich kenne mich zwar etwas mit VBA aus und habe viele Codeansätze gefunden, komme jedoch mit keinem richtig zurecht. Meine Aufgabenstellung ist die folgende:
Ich möchte in einem bestimmten Bereich einer Tabelle alle Zeilen sowie alle Spalten ausblenden, die in diesem Bereich komplett leer sind. Die Zeilen und Spalten stehen dabei in keiner Abhängigkeit zueinander.
Eine weitere Schwierigkeit stellt dabei "komplett leer" da, die Zellen sind zum großten Teil mit Formeln versehen. Leer bedeutet daher den Ausdruck "" - ich glaube zumindet dass dies über .Value = "" gelöst werden könnte.
Über einen weiteren Aufruf des Makros soll es dann möglich sein wieder alle Zeilen und Spalten einzublenden.
Wäre schön wenn jemand hierfür Ansätze hätte die mir weiterhelfen können.

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "leere" Spalten und Zeilen in Bereich ausblenden
26.09.2012 21:43:16
Josef

Hallo Andreas,
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub hiddeRowsAndCols()
  Dim rng As Range, rngHideC As Range, rngHideR As Range
  Dim vntCount As Variant
  
  With Sheets("Tabelle2").Range("A1:F100")
    vntCount = CallByName(.Columns, IIf(Val(Application.Version < 12), "Count", "CountLarge"), VbGet)
    For Each rng In .Rows
      If Application.CountBlank(rng) = vntCount Then
        If rngHideR Is Nothing Then
          Set rngHideR = rng
        Else
          Set rngHideR = Union(rngHideR, rng)
        End If
      End If
    Next
    vntCount = CallByName(.Rows, IIf(Val(Application.Version < 12), "Count", "CountLarge"), VbGet)
    For Each rng In .Columns
      If Application.CountBlank(rng) = vntCount Then
        If rngHideC Is Nothing Then
          Set rngHideC = rng
        Else
          Set rngHideC = Union(rngHideC, rng)
        End If
      End If
    Next
  End With
  
  If Not rngHideR Is Nothing Then rngHideR.EntireRow.Hidden = True
  If Not rngHideC Is Nothing Then rngHideC.EntireColumn.Hidden = True
  
  Set rngHideC = Nothing
  Set rngHideR = Nothing
  Set rng = Nothing
End Sub


Sub unhiddeRowsAndCols()
  With Sheets("Tabelle2").Range("A1:F100")
    .Rows.Hidden = False
    .Columns.Hidden = False
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: "leere" Spalten und Zeilen in Bereich ausblenden
26.09.2012 22:01:17
Andreas
Hi, danke für die schnelle Antwort - leider funktioniert es noch nicht ganz.
Ich habe die Bereich entsprechend angepasst, leider meldet er mir jetzt einen Laufzeitfehler 438 (Objekt unterstützt diese Eigenschaft oder Methode nicht) bei der folgenden Zeile
vntCount = CallByName(.Columns, IIf(Val(Application.Version < 12), "Count", "CountLarge"), VbGet)
Mach ich noch was falsch?

Anzeige
AW: "leere" Spalten und Zeilen in Bereich ausblenden
26.09.2012 22:06:50
Josef

Hallo Andreas,
"Mach ich noch was falsch?"
nein, ich habe erstens eine Klammer falsch gesetzt und zweitens "CallByName" einmal überflüssiger Weise eingesetzt ;-)
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub hiddeRowsAndCols()
  Dim rng As Range, rngHideC As Range, rngHideR As Range
  Dim vntCount As Variant
  
  With Sheets("Tabelle2").Range("A1:F100")
    vntCount = .Columns.Count
    For Each rng In .Rows
      If Application.CountBlank(rng) = vntCount Then
        If rngHideR Is Nothing Then
          Set rngHideR = rng
        Else
          Set rngHideR = Union(rngHideR, rng)
        End If
      End If
    Next
    vntCount = CallByName(.Rows, IIf(Val(Application.Version) < 12, "Count", "CountLarge"), VbGet)
    For Each rng In .Columns
      If Application.CountBlank(rng) = vntCount Then
        If rngHideC Is Nothing Then
          Set rngHideC = rng
        Else
          Set rngHideC = Union(rngHideC, rng)
        End If
      End If
    Next
  End With
  
  If Not rngHideR Is Nothing Then rngHideR.EntireRow.Hidden = True
  If Not rngHideC Is Nothing Then rngHideC.EntireColumn.Hidden = True
  
  Set rngHideC = Nothing
  Set rngHideR = Nothing
  Set rng = Nothing
End Sub


Sub unhiddeRowsAndCols()
  With Sheets("Tabelle2").Range("A1:F100")
    .Rows.Hidden = False
    .Columns.Hidden = False
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: "leere" Spalten und Zeilen in Bereich ausblenden
26.09.2012 22:11:24
Andreas
Hi,
funktioniert einwandfrei - großes Lob an den guten und schnellen Support.
Gruß Andreas

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige