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

Mit VBA Zeilen checken und ausblenden

Mit VBA Zeilen checken und ausblenden
Reiner
Hallo zusammen!
Ich bin neue hier im Forum und hoffe jemand kann mir weiterhelfen.
Folgendes Problem.
Ich möchte die ersten 100 Zeilen/Zellen einer Spalte per VBA checken.
Steht in der Zelle eine 0 soll die ganze Reihe ausgeblendet werden.
Steht in der Zelle eine 1 soll die Zeile NICHT ausgeblendet werden.
Mit diesem Code, welchen ich im Internet gefunden habe, funktioniert es:

Sub ausblenden()
Dim i As Integer
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(i, 1).Value = 0 Then
Rows(i).Hidden = True
End If
Next i
End Sub

Jetzt zu meiner eigentlichen Frage:
Wieso funktioniert MEIN selbst gebastelter Code nicht? Das ist er:

Sub ausblenden()
For i = 1 To Cells(100, 3) Step 1
If Cells(i, 3) = 0 Then
Rows(i).Hidden = True
End If
Next i
End Sub

Das macht mich wirklich wahnsinnig.
Über Hilfe würde ich mich sehr freuen, vielen Dank!
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 10:39:58
Rudi
Hallo
For i = 1 To Cells(100, 3) Step 1
damit läuft die Schleife von 1 bis zu dem Wert, der in C100 steht und nicht von 1 bis 100.
Step 1 ist überflüssig.
Gewöhne dir an, Variablen zu deklarieren.
Gruß
Rudi
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 10:42:11
hary
Hallo
Cells(100, 3) enthaelt keine Zahl.
schreib mal:

For i = 1 To 100 Step 1

gruss hary
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 10:56:38
Reiner
Vielen Dank für eure Antwort!
Mit der Antwort von Hary funktioniert es.
Dann habe ich aber noch eine Verständnisfrage:
Ich verstehe was ihr meint, wenn ich sagt, dass der von mir angegebene Term:
Cells(100, 1)

Nicht bedeutet, dass das Makro dann bis zur Zeile 100 läuft.
Und da in der angegebenen Zelle nichts drin steht, also 0, passiert nichts.
ABER:
Wenn ich mir den "fremden" Code anschaue, da heißt der Term:
Cells(Rows.Count, 1)

Wobei "Rows.Count" die Anzahl der Zeilen in Spalte 1 zurückgibt.
So... Wenn ich jetzt sagen wir mal nur 100 Zeilen hätte, dann würde der Term doch heißen:
Cells(100, 1)

RICHTIG?
Aber dann ist das doch das Selbe wie bei mir...
Ich check es nicht...
Und bitte nicht den Kopf abreisen.
Ich hoffe ich konnte mich deutlich genug ausdrücken.
Vielen Dank für eure Geduld!!
Anzeige
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 10:56:39
Reiner
Vielen Dank für eure Antwort!
Mit der Antwort von Hary funktioniert es.
Dann habe ich aber noch eine Verständnisfrage:
Ich verstehe was ihr meint, wenn ich sagt, dass der von mir angegebene Term:
Cells(100, 1)

Nicht bedeutet, dass das Makro dann bis zur Zeile 100 läuft.
Und da in der angegebenen Zelle nichts drin steht, also 0, passiert nichts.
ABER:
Wenn ich mir den "fremden" Code anschaue, da heißt der Term:
Cells(Rows.Count, 1)

Wobei "Rows.Count" die Anzahl der Zeilen in Spalte 1 zurückgibt.
So... Wenn ich jetzt sagen wir mal nur 100 Zeilen hätte, dann würde der Term doch heißen:
Cells(100, 1)

RICHTIG?
Aber dann ist das doch das Selbe wie bei mir...
Ich check es nicht...
Und bitte nicht den Kopf abreisen.
Ich hoffe ich konnte mich deutlich genug ausdrücken.
Vielen Dank für eure Geduld!!
Anzeige
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 11:13:30
Rudi
Hallo,
Wenn ich mir den "fremden" Code anschaue, da heißt der Term: Cells(Rows.Count, 1)

nein!
Da steht Cells(Rows.Count, 1).End(xlUp).Row
Rows.Count ist bei dir 1.048.576, da es in XL2007 soviele Zeile gibt.
Cells(Rows.Count, 1).End(xlUp) ergibt die letzte gefüllte Zelle von unten. Wie Strg+Up aus A1048576 heraus.
.Row gibt dann die Zeile dieser Zelle zurück.
Cells(100,1) gibt den Inhalt der Zelle A100 wieder. (Cells(Zeile, Spalte))
Gruß
Rudi
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 11:14:11
hary
Hallo

Cells(Rows.Count, 1).End(xlUp).Row

gibt die Zeilennummer der letzten belegten Zelle in Spalte A.
"Wobei "Rows.Count" die Anzahl der Zeilen in Spalte 1 zurückgibt."
Richtig, aber das sind bei kleiner Version Excel07 ca. 65000. Wichtig ist die Anweisung: End(xlUp)
Mit Cells(100,1) benennst Du A100. Und da Cells(100,1) grundsaetzlich Value wiedergibt,ergibt Deine Zeile:
For i = 1 to Cells(100,1)
Fuer i = 1 to Wert der Zelle A100 / wenn nix drinsteht also i = 1 to 0
gruss hary
Anzeige
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 11:44:47
Reiner
Ich habe es noch nicht verstanden.
Also eigentlich schon, nur mit einer Sache habe ich nach wie vor ein Problem.
Hary, du hast gesagt:
Fuer i = 1 to Wert der Zelle A100 / wenn nix drinsteht also i = 1 to 0
Versteh ich zu 100%. Ganz klar!
Aber wenn ich doch jetzt sage:
Cells(Rows.Count, 1)
Und "Rows.Count" die letzte Zeilennummer zurückgibt, dann wird doch auch wieder nur eine Zelle angegeben.
Wenn in diesem Beispiel Spalte A 100 Zeilen hat, dann ist der Wert von "Rows.Count" doch auch 100.
Somit steht dann:
Cells(100 , 1)
Was ja wieder A100 bedeuten würde.
So, und wenn in A100 jetzt eine 1 drin stehen würde, dann würde es ja wieder heißen:
Fuer i = 1 to Wert der Zelle A100 / wobei es also i = 1 to 1
heißen würde...
Wo verstehe ich was falsch?
Anzeige
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 11:59:11
hary
Hallo
"Aber wenn ich doch jetzt sage:
Cells(Rows.Count, 1)
Und "Rows.Count" die letzte Zeilennummer zurückgibt, dann wird doch auch wieder nur eine Zelle angegeben.
Richtig, die letzte Zelle wird angesprochen, also A65536
So, und wenn in A100 jetzt eine 1 drin stehen würde, dann würde es ja wieder heißen:
Fuer i = 1 to Wert der Zelle A100 / wobei es also i = 1 to 1
Richtig!!!
Teste mal in einer leeren Mappe:

Sub letzte()
MsgBox Cells(Rows.Count, 1) 'zeigt nix an weil die zelle leer ist
MsgBox Cells(Rows.Count, 1).Row 'zeigt die letzte Zeilennummer an
End Sub

gruss hary
Anzeige
AW: Mit VBA Zeilen checken und ausblenden
02.12.2011 12:11:18
Reiner
Mensch Hary, jetzt habe ich es verstanden!!!
Cells(Rows.Count, 1)
Gibt den INHALT einer Zelle als Wert wieder.
Cells(Rows.Count, 1).Row
Gibt hingegen die NUMMER der Zelle als Wert zurück!!
VIELEN VIELEN DANK für deine Geduld und dein Beispiel!!
Super nett von dir!
Ich wünsch dir einen schönen Tag und ein schönes Wochenende!!

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige