Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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

Zeilen u. Spalten in mehrere Bereichen ausblenden

Zeilen u. Spalten in mehrere Bereichen ausblenden
21.01.2009 19:51:38
Andreas
Hi Leute,
Ich hab folgende Aufgabe zu bewältigen:
Ich habe eine Excel-Datei mit einigen Arbeitsblättern, in denen in mehreren Bereichen/Tabellen bestimmte Zeilen und Spalten ausgeblendet werden sollen. Hier ein Beispiel-File:
https://www.herber.de/bbs/user/58668.xls
In den Blättern "Bewertung1" bis "Bewertung4" ,welche jeweils identisch aufgebaut sind, befinden sich mehrere Tabellen, in denen jeweils Zeilen und Spalten ohne Überschrift augeblendet werden sollen. Im Blatt "Bewertung1" wären dies im Beispielfile also die Zeilen 13-19,28-34,43-49,58-64 etc. und die Spalten E-K ( die auszublendenden Zeilen und Spalten sind in den anderen Blättern identisch). Die leeren Zeilen zwischen den einzelnen Tabellen sollen dabei jeweils sichtbar bleiben. Bevor die "leeren" Zeilen und Spalten ausgeblenden werden müssten allerdings alle Zeilen und Spalten in den Arbeitsblättern wieder eingeblendet werden. Wenn es möglich ist sollte dieser Vorgang sowohl bei eingeblendeten als auch bei ausgeblendeten Tabellenblättern möglich sein.
Ich habe bereits ein Makro, das diese Funktionalität für Tabellenblätter mit nur einer Tabelle ausführt,leider reichen meine Kenntnisse nicht aus um dieses für mehrere Tabellen erweitert(Hier heissen die Blätter Gewichtung1-9). Könnte mir da jemand weiterhelfen?

Sub Zeilen_Spalten_Gewichtung_ausblenden()
For Each Blatt In ActiveWorkbook.Worksheets
Namebl = Blatt.Name
If Sheets(Namebl).Visible = 0 Or Blatt.Visible = 2 Then
GoTo weiter
End If
If Left(Namebl, 10) = "Gewichtung" Then
Sheets(Namebl).Select
Range("A10:A17").Select
For Each Zeile2 In Selection.Cells
Zeile2.EntireRow.Hidden = False
Next Zeile2
For Each Zeile In Selection.Cells
If Zeile.Value = "" Then
Zeile.EntireRow.Hidden = True
Else
Zeile.EntireRow.Hidden = False
End If
Next Zeile
Range("B9:I9").Select
For Each Spalte2 In Selection.Cells
Spalte2.EntireColumn.Hidden = False
Next Spalte2
For Each Spalte In Selection.Cells
If Spalte.Value = "" Then
Spalte.EntireColumn.Hidden = True
Else
Spalte.EntireColumn.Hidden = False
End If
Next Spalte
End If
weiter:
Next Blatt
End Sub



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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen u. Spalten in mehrere Bereichen ausblenden
21.01.2009 20:17:00
Ramses
Hallo
probier das mal aus mit deiner Tabelle
Option Explicit

Sub Zeilen_Spalten_Gewichtung_ausblenden()
    Dim wksChk As Worksheet
    Dim i As Long, n As Long
    Dim chkCell As Range
    'wksArr(X) soweit anpassen wie Tabellen benötigt werden
    Dim wksArr(3) As String
    'Hier die Tabellen auf dies angewendet werden soll
    'entsprechend 3,4,5 usw. weiterführen
    wksArr(0) = "Tabelle1"
    wksArr(1) = "Tabelle2"
    wksArr(2) = "Tabelle3"
    '...usw
    
    For i = 0 To UBound(wksArr()) - 1
        With Worksheets(wksArr(i))
            'Spalte A
            For n = 10 To 17
                If .Cells(n, 1) = "" Then
                    .Rows(n).EntireRow.Hidden = True
                Else
                    .Rows(n).EntireRow.Hidden = False
                End If
            Next n
            'Spalte B
            For Each chkCell In Range("B9:I9")
                If chkCell = "" Then
                    chkCell.EntireRow.Hidden = True
                    chkCell.EntireColumn.Hidden = True
                Else
                    chkCell.EntireRow.Hidden = False
                    chkCell.EntireColumn.Hidden = False
                End If
            Next chkCell
        End With
    Next i
End Sub

Gruss Rainer
Anzeige
AW: Zeilen u. Spalten in mehrere Bereichen ausblenden
21.01.2009 20:58:42
Andreas
Hi Rainer,
vielen Dank schon mal, ich hab jetzt mal den Code (soweit) vervollständigt. Leider vermute ich,das du mich etwas Missverstanden hast. Mein Problem lag vor allem darin,dass mehrere Bereiche in einem Tabellenblatt betrachtet werten müssen nicht nur einer, wie es jetzt der Fall ist. Vielleicht könntest du einen Blick in das Beispielfile werfen, dann sollte klarer sein was gemeint ist. Es müssen mehrere Ranges betrachtet werden.
Bei Ausführung der Funktion über einen Button in einem anderen Tabellenblatt blendet es bisher zwar die Zeilen in den Tabellebblättern "Bewertung1" bis "Bewertung4"aus aber die Spalten bleiben eingeblendet. Zudem wird die Funktionalität auch auf dem Tabellenblatt ausgeführt in dem der Button liegt (Blatt "Prozessauswahl").

Sub Zeilen_Spalten_Bewertung_ausblenden()
Dim wksChk As Worksheet
Dim i As Long, n As Long
Dim chkCell As Range
Dim wksArr(4) As String
wksArr(0) = "Bewertung1"
wksArr(1) = "Bewertung2"
wksArr(2) = "Bewertung3"
wksArr(3) = "Bewertung4"
For i = 0 To UBound(wksArr()) - 1
With Worksheets(wksArr(i))
'Spalte A
For n = 10 To 19
If .Cells(n, 1) = "" Then
.Rows(n).EntireRow.Hidden = True
Else
.Rows(n).EntireRow.Hidden = False
End If
Next n
'Spalte B
For Each chkCell In Range("B9:K9")
If chkCell = "" Then
chkCell.EntireRow.Hidden = True
chkCell.EntireColumn.Hidden = True
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell
End With
Next i
End Sub


Anzeige
Noch offfen...
21.01.2009 21:20:54
Ramses
Hallo
"...auch auf dem Tabellenblatt ausgeführt in dem der Button liegt (Blatt "Prozessauswahl"). ..:"
Kann ich mir nicht vorstellen, dass dies auf einem anderen Blatt ausgeführt wird, als im wks-Array angegeben
"...Es müssen mehrere Ranges betrachtet werden..."
Du hast gesagt dein Code funktioniert,... warum also sollte ich die Mappe laden.
Die Bereiche tauchen in deinem Makro nicht auf.
Es wird viel zu viel hochgeladen für jeden Pipifax
Du musst doch bloss den Bereich
For Each chkCell In Range("B9:I9")
If chkCell = "" Then
chkCell.EntireRow.Hidden = True
chkCell.EntireColumn.Hidden = True
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell
entsprechend oft kopieren
Sorry,...aber deine Aufgabe ist nicht lösbar
Du kannst eine Spalte nur für die GANZE Tabelle ausblenden.
Sobald du in einen der unteren Bereiche kommst, und in einer der Zellen ein Wert steht, wird diese natürlich wieder eingeblendet.
Mit den Zeilen verhält es sich genauso.
Darum siehst du zum Schluss auch keine Ergebnis in den aufgeführten Tabellen, weil in JEDER Spalte, bzw. in jeder Zeile im angegebenen Bereich, mal ein Wert steht
Keine Ahnung was das zum Schluss werden soll,.... aber lösen kann ich das nicht.
Zumindest wenn ich deinen Code und die Aktionen darin als Anforderung definiere.
Daher stelle ich die Frage nochmals auf offen.
Vielleicht versteht es jemand anders.
Gruss Rainer
Anzeige
AW: geklärt,aber unperformant--> neuer thread
21.01.2009 22:10:13
Andreas
Hi,
Hab jetzt doch den Code aus dem ersten Beitrag entsprechend erweitert und es funktioniert auch ,allerdings dauert das ganze ein bisschen lang. Werd dafür allerdings einen neuen Thread eröffnen. Vielen Dank für die Mühe!!!
Gruss,
Andy

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige