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

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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
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
Ist das noch Akut? Musterbeispiel dabei
26.06.2012 19:21:02
Matze,Matthias
Hallo Christina,
so ? : https://www.herber.de/bbs/user/80743.xlsm
Gruß Matze
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige