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

Excel Schleife über eingeblendete Zellen

Excel Schleife über eingeblendete Zellen
04.09.2015 19:00:57
mischiz
Hallo zusammen,
ich habe eine Frage ich habe eine Liste mit zwei Spalten und wenn in beiden 0 steht, soll die Zeile ausgeblendet werden. Wenn jedoch die rechte Spalte nicht null ist, die Zelle links davon 0 und die Zelle darüber nicht null ist, dann sollen die beiden Zellen ausgetauscht werden, so dass auf eine Zelle alles nicht 0 ist. Nun klappt das bei mir soweit, dass mein Code funktioniert solange dazwischen keine ausgeblendeten Zeilen sind. Wie kann ich meinen Code ändern, dass es nur mit eingeblendeten funktioniert.
Vielen herzlichen Dank
Liebe Grüsse

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Schleife über eingeblendete Zellen
04.09.2015 19:20:37
Daniel
Hi
du könntest beispielsweise zunächst einmal die Zeilennummern der sichtbaren Zeilen in ein Array schreiben.
Dann läufst du mit einer Schleife über dieses Array und liest zum Indexeintrag die jeweilige Zeilennummer aus dem Array und arbeitest mit dieser Zeilennummer.
sieht im Ansatz etwa so aus:

Dim Zeile() as long
dim i as long
Dim rng as Range
'--- Zeilennummern der sichtbaren Zeilen ermitteln
With ActiveSheet.Usedrange.Columns(1).SpecialCells(xlcelltypevisible)
Redim Zeile(1 to .Cells.Count)
for each rng in .Cells
i = i + 1
Zeile(i) = rng.Row
Next
End with
'--- prüfen, ob der Wert der zweiten sichtbaren Zelle in Spalte A gleich dem darunterliegenden  _
Wert ist
i = 2
If Cells(Zeile(i), 1) = Cells(Zeile(i + 1), 1) Then...

Gruß Daniel

Anzeige
AW: Excel Schleife über eingeblendete Zellen
04.09.2015 19:57:29
mischiz
Hey vielen Dank für die schnelle Antwort. Habe es jetzt zuhause versucht nachzustellen, da ich _ nicht im Büro bin. Bei mir klappt es aber leider nicht. Sieht jemand den Fehler? Vielen Dank!

Sub test()
Dim n As Long, laR As Long
laR = Cells(Rows.Count, 4).End(xlUp).Row
For n = 1 To 10
If Cells(n, 3).Value = "0" And Cells(n, 4).Value = "" Then
Cells(n, 3).EntireRow.Hidden = True
End If
If Cells(n, 3).Value = "0" And Cells(n, 4).Value = "0" Then
Cells(n, 3).EntireRow.Hidden = True
End If
Next n
Dim Zeile() As Long
Dim i As Long
Dim rng As Range
'--- Zeilennummern der sichtbaren Zeilen ermitteln
With ActiveSheet.UsedRange.Columns(3).SpecialCells(xlCellTypeVisible)
ReDim Zeile(3 To .Cells.Count)
For Each rng In .Cells
i = i + 1
Zeile(i) = rng.Row
Next
End With
'--- prüfen, ob der Wert der zweiten sichtbaren Zelle in Spalte A gleich dem darunterliegenden  _
_
Wert ist
If Cells(Zeile(i - 1), 3).Value > "0" And Cells(Zeile(i), 3).Value = "0" And Cells(Zeile(i), 4). _
Value > 0 Then
Temp = Cells(Zeile(i), 3)
Cells(Zeile(i), 3) = Cells(Zeile(i - 1), 3)
Cells(Zeile(i - 1), 3) = Temp
End If
End Sub

Anzeige
AW: Excel Schleife über eingeblendete Zellen
04.09.2015 21:32:17
Daniel
Hi
"klappt nicht" ist als Fehlermeldung genauso hilfreich wie der Hinweis: "wenns nicht klappt, machs anders"
beschreib mal bitte genauer, was nicht klappt.
gibts ne Fehlermeldung? Wenn ja in welcher Programmzeile und wie lautet die Fehlermeldung (Nummer, Text)?
wenn nein, was sollte deiner Meinung nach passieren und was passiert tatsächlich?
Nützlich ist immer auch das Hochladen der Datei, damit man den Fehler direkt ausprobieren kann.
ist wie beim Arzt, Patient auf dem Tisch ist immer besser als ne Telefonberatung.
naja, ein Fehler ist schon mal, dass du beim Dimensionieren der Variablen Zeile() den Index mit der Zeilennummer verwechselt
Gurß Daniel

Anzeige
AW: Excel Schleife über eingeblendete Zellen
04.09.2015 21:54:16
mischiz
Hey Daniel,
Danke für deine Antwort. Es tut mir leid, dass ich das Problem nicht beschrieben habe. Bei mir kommt immer die Fehlermeldung "Indexfehler ausserhalb des gültigen Bereichs*. Der Debugger zeigt mir jedoch keine Zeile an. Leider habe ich das Richtige File erst wieder am Montag. Könntest du mir näher erklären, was ich genau verwechselt habe. Sorry sind sehr wahrscheinlich dumme Fragen, aber bin zurzeit noch blutiger Anfänger im VBA.
Danke vielmal!

AW: Excel Schleife über eingeblendete Zellen
05.09.2015 15:34:21
Daniel
HI
hier z.B. ReDim Zeile(3 To .Cells.Count)
das muss immer lauten ReDim Zeile(1 To .Cells.Count)
und im folgenden Teil (bei der Überprüfung) hast du dann vergessen zu bestimmen, welche Zeilen du überhaupt mit eineander vergleichen willst (das i)
bedenke, ich kenne deine Datei und deine Aufgabenstellung nicht.
daher kann ich dir auch keinen fertigen Code erstellen, den du hirnlos kopieren und dann sofort verwendemn kannst.
Gruss Daniel

Anzeige
AW: Excel Schleife über eingeblendete Zellen
05.09.2015 17:46:43
mischiz
Vielen lieben Dank Daniel! Jetzt nach dem ich die 1 eingefügt habe, funktioniert es nach meinen Wünschen. Schönes Wochenende wünsche ich dir! :)

AW: Excel Schleife über eingeblendete Zellen
07.09.2015 18:48:06
mischiz
Hey,
ich bins nochmal, hab hier noch meinen aktuellen Code, doch es funktioniert nicht wie gewünscht. Wenn ich den Code durchführe kommt keine Fehlermeldung, aber es tut sich auch nichts.
Mein Ziel ist es, dass ich zuerst nach gewissen Kriterien 0er ausblende. Falls jedoch rechts von der Null eine Zahl ist und oberhalb auch, dann sollen die Zellen ausgetauscht werden. Das ganze klappt bei mir, solange keine ausgeblendeten Werte dazwischen sind. Würde gerne meine Datei hochladen, aber leider klappt das nicht. Danke für jede Hilfe.

Private Sub CommandButton2_Click()
Dim n As Integer
For n = 8 To 200
If Cells(n, 3).Value = "0" And Cells(n, 5).Value = "" Then
Rows(n).EntireRow.Hidden = True
End If
If Cells(n, 3).Value = "0" And Cells(n, 5).Value = "0" Then
Rows(n).EntireRow.Hidden = True
End If
If Cells(n, 3).Value = "" And Cells(n, 5).Value = "0" Then
Rows(n).EntireRow.Hidden = True
End If
Next
'--- Zeilennummern der sichtbaren Zeilen ermitteln
With ActiveSheet.UsedRange.Columns(3).SpecialCells(xlCellTypeVisible)
ReDim Zeile(1 To .Cells.Count)
For Each rng In .Cells
i = i + 1
Zeile(i) = rng.Row
Next
End With
'--- prüfen, ob der Wert der zweiten sichtbaren Zelle in Spalte A gleich dem  _
darunterliegenden _
_
Wert ist
If Cells(Zeile(i - 1), 3).Value > "0" And Cells(Zeile(i), 3).Value = "0" And Cells(Zeile(i),  _
5).Value > "0" Then
Temp = Cells(Zeile(i), 3)
Cells(Zeile(i), 3) = Cells(Zeile(i - 1), 3)
Cells(Zeile(i - 1), 3) = Temp
Temp2 = Cells(Zeile(i), 1)
Cells(Zeile(i), 1) = Cells(Zeile(i - 1), 1)
Cells(Zeile(i - 1), 1) = Temp2
End If
For n = 8 To 200
If Cells(n, 3).Value = "0" And Cells(n, 5).Value = "" Then
Rows(n).EntireRow.Hidden = True
End If
Next
End Sub

Anzeige
AW: Excel Schleife über eingeblendete Zellen
07.09.2015 18:59:04
Daniel
Hi
hast du auch die Hinweise auf der Downloadseite beachtet:
- Datei darf nicht länger als 300kb sein
- xlsb ist nicht zulässig (dh xlsm nehmen)
- Verzeichnis und Dateiname dürfen kein Leerzeichen enthalten
Gruß Daniel

AW: Excel Schleife über eingeblendete Zellen
07.09.2015 19:26:01
mischiz
Hey Daniel,
Doch die habe ich eigentlich beachtet, aber lag wohl an meinem Macbook. Jetzt am Windows-Desktop klappts. Hier die Datei: https://www.herber.de/bbs/user/100070.xlsm
Dann wird mein Unterfangen etwas verständlicher :)
Danke für deine grosse Hilfe!!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige