Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

"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.

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?

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

362 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige