Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Schleife zum Zeilen Ein- und Ausblenden

Schleife zum Zeilen Ein- und Ausblenden
Christiane
Hallo!
Ich möchte bei Eingabe eines Namens in eine Zelle die darunter liegenden vier Zeilen einblenden und ansonsten diese Zeilen ausblenden.
Um dies zu erreichen, habe ich eine Schleife gebaut:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 17 To 62 Step 5
If Cells(1, i)  "" Then
Rows(i + 1).Hidden = False
Rows(i + 2).Hidden = False
Rows(i + 3).Hidden = False
Rows(i + 4).Hidden = False
Else
Rows(i + 1).Hidden = True
Rows(i + 2).Hidden = True
Rows(i + 3).Hidden = True
Rows(i + 4).Hidden = True
End If
Next i
End Sub

Leider sind jetzt immer die Zeilen ausgeblendet, egal ob in A17, A22, A27 etc. Namen eingetragen sind oder nicht.
Hab's auch schon mit
If ISEMPTY(Cells(1, i)) = False Then
probiert, ohne Erfolg. Entweder sind alle ein- oder alle ausgeblendet, das Programm scheint nicht zu verstehen, wann sich ein Name in A17 befindet und wann nicht.
Woran kann's liegen?
Schönen Gruß
Christiane
Anzeige
AW: Schleife zum Zeilen Ein- und Ausblenden
22.06.2012 14:07:44
Jürgen
Hallo Christiane,
bei Cells ist der erste Parameter die Zeile, der zweite die Spalte, versuche es also mal mit Cells(i, 1)
Gruß, Jürgen
AW: Schleife zum Zeilen Ein- und Ausblenden
22.06.2012 15:09:54
Christiane
Super, funktioniert!
Vielen herzlichen Dank, das war ja einfach :)
AW: Schleife zum Zeilen Ein- und Ausblenden
22.06.2012 15:13:37
Christiane
Eine Frage noch!
Ich dachte, ich hätte die Ausführung des Makros durch
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
auf die Zellen der for-Schleife und die auszublendenden Zeilen beschränkt, allerdings rechnet er bei jedem Klick auf das Blatt (was ich als ein wenig störend empfinde).
Kann ich das durch einen genaueren Befehl beschränken, das also wirklich nur "überlegt" werden muss, ob das Makro laufen soll, wenn ich in Zelle A17, A22, o.Ä. klicke?
Anzeige
AW: Schleife zum Zeilen Ein- und Ausblenden
23.06.2012 20:52:48
Matze,Matthias
Hallo Christina,
deine weitere Frage war nicht mit offen gekennzeichnet, somit war es Zufall das hier nochmal
reingeschaut habe. Du musst dir auch einen Bereich nehmen mit dem du arbeiten möchtest
und diesen als Target dann auch setzen bz. deklarieren.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim Bereich As Range  ' variabler Bereich
Set Bereich = Intersect(Range("A17:A62"), Target)
If Not Bereich Is Nothing Then
For i = 17 To 62 Step 5
If Cells(i, 1)  "" Then
Rows(i + 1).Hidden = False
Rows(i + 2).Hidden = False
Rows(i + 3).Hidden = False
Rows(i + 4).Hidden = False
Else
Rows(i + 1).Hidden = True
Rows(i + 2).Hidden = True
Rows(i + 3).Hidden = True
Rows(i + 4).Hidden = True
End If
Next Z
End If
End Sub
Nur noch in diesem Bereich a17 : a62 wirkt sich der Code aus.
Gruß Matze
Anzeige
noch ne kleine Änderung
24.06.2012 14:09:46
Matze,Matthias
aus : Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mach: Private Sub Worksheet_Change(ByVal Target As Range)
Matze
AW: noch ne kleine Änderung
25.06.2012 10:43:20
Christiane
Danke vielmals! Du warst mir eine große Hilfe!
AW: Schleife zum Zeilen Ein- und Ausblenden
25.06.2012 13:17:21
Christiane
Eine weitere Änderung:
Ich möchte jetzt, falls in den Zellen ncihts drinsteht, in einem anderen Bereich den Text weiß färben (und damit verstecken) bzw. nicht.
Der Zugriff auf Range scheint falsch zu sein, wie geht es richtig?
(auch direkt Range(Cells(10, k + 1),Cells(11,k+3)) wird nicht angenommen)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim Bereich As Range
Set Bereich = Intersect(Range("A17:A62"), Target)
If Not Bereich Is Nothing Then
For i = 18 To 63 Step 5
If Cells(i, 1)  "" Then
Rows(i + 1).Hidden = False
Rows(i + 2).Hidden = False
Rows(i + 3).Hidden = False
Rows(i + 4).Hidden = False
Else
Rows(i + 1).Hidden = True
Rows(i + 2).Hidden = True
Rows(i + 3).Hidden = True
Rows(i + 4).Hidden = True
End If
Next i
End If
Dim k As Long
Dim Bereich2 As Range
Set Bereich2 = Intersect(Range("B19:C64"), Target)
If Not Bereich2 Is Nothing Then
For k = 19 To 64 Step 5
Anfang = Cells(10, k + 1)
Ende = Cells(11, k + 3)
If Cells(2, k)  "" And Cells(3, k)  "" Then
Range("Anfang:Ende").Font.ColorIndex = 1
Else
Range("Anfang:Ende").Font.ColorIndex = 2
End If
Next k
End If
End Sub

Anzeige
du verwechselst die Cells(Zeile,Spalte)
25.06.2012 21:15:58
Matze,Matthias
Hallo Christiane, (lasse offen für weitere Bearbeitung durch Andere)
dein weiterer Code ist nicht von dieser Welt, genau wie meine Codes, ich übe ja auch noch VBA zu schreiben.
Heute werde ich das nicht mehr schaffen muss an die Arbeit, aber du musst mal nach
Cells ( Zeile, Spalte), Range , als Grundregel die Hilfe dazu aufrufen, danach mit dem Thema:
Private Sub Worksheet_Change(ByVal Target As Range)
Bin erst morgen spät Nachmittags wieder erreichbar.
Gruß Matze
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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