erste freie Zelle: stehe am Schlauch

Bild

Betrifft: erste freie Zelle: stehe am Schlauch
von: Franz W.
Geschrieben am: 05.10.2003 20:54:39

Hallo Fachleute,

ich stehe auf dem Schlauch mit folgendem Teilcode:


With Worksheets("aktive_kunden")
.Columns(1).ClearContents
.Range("A1") = "Nr."
loLetzte = 65536
If .Range("A65536") = "" Then loLetzte = .Range("A65536").End(xlUp).Row
End With

Spalte A wird gelöscht, dann wird in A1 was eingetragen ("Nr."). Und "loLetzte" sollte jetzt eigentlich "2" sein!! Ist aber "1"!! Ist übrigens auch "1", wenn ich in A1 nichts eintrage!! Da kommt für "loLetzte" auch "1" raus!! Ich versteh's nicht und komm nicht dahinter und bitte Euch um Eure Hilfe.

Grüße
Franz

Bild


Betrifft: AW: erste freie Zelle: stehe am Schlauch
von: Ramses
Geschrieben am: 05.10.2003 20:58:44

Hallo Franz,

beides ist korrekt. Es gibt keine Zeile 0 :-)
Verwende

loLetzte = .Range("A65536").End(xlUp).Row + 1

Gruss Rainer


Bild


Betrifft: AW: erste freie Zelle: stehe am Schlauch
von: Christoph
Geschrieben am: 05.10.2003 21:02:13

Hi Farnz,
der Ausdruck: "Range("A65536").End(xlUp).Row" oder auch "Cells(Rows.Count, 1).End(xlUp).Row" gibt (von unten nach oben gezählt) die Zeile in der Spalte A mit dem letzten Entrag. Da es keine Zeile über Zeile 1 gibt ist bei einer leeren Spalte die "loLetzte" die Zeile 1. Wenn du die nächste freie Zeile haben willst dann schreib: "loLetzte +1"

Gruß
Christoph


Bild


Betrifft: AW: erste freie Zelle: stehe am Schlauch
von: PeterW
Geschrieben am: 05.10.2003 21:05:42

Hallo Franz,

mal ne ganz dumme Frage: wenn du die Spalte löschst warum willst du, nachdem in A1 etwas geschrieben wurde, die letzte Zelle suchen? Je nachdem wass du vor hast setze loLetzte doch direkt auf 2.

Gruß
Peter


Bild


Betrifft: AW: erste freie Zelle: stehe am Schlauch
von: Franz W.
Geschrieben am: 05.10.2003 21:20:49

Hallo Peter,

eigentlich hast Du recht. Aber im folgenden zähle ich loLetzte in einer For-Schleife weiter (übrigens mit Deiner Hilfe von vorhin) und verwende es dann noch mal:

For Each NrZel In KdBereich
If IsNumeric(NrZel) And Not NrZel = "" And NrZel <= 999 Then
' If IsNumeric(NrZel) And Not NrZel = "" And Len(NrZel) <= 3 Then
NrZel.Copy Destination:=Worksheets("aktive_kunden").Cells(loLetzte, 1)
loLetzte = loLetzte + 1
End If
Next
ActiveWorkbook.Names("NurAktive").Delete
ActiveWorkbook.Names.Add Name:="NurAktive", RefersToR1C1:= _
"=aktive_kunden!R1C1:R" & loLetzte - 1 & "C4"

Grüße
Franz


Bild


Betrifft: AW: erste freie Zelle: stehe am Schlauch
von: PeterW
Geschrieben am: 05.10.2003 21:30:26

Hallo Franz,

verstehe dein "Aber" nicht. Es ist doch egal, ob du eine Variable berechnest oder direkt zuweist:

With Worksheets("aktive_kunden")
.Columns(1).ClearContents
.Range("A1") = "Nr."
loLetzte = 2
End With

sollte deine nachfolgende Schleife nicht nachteilig beeinflussen. Anders ausgedrückt: warum willst du den Code arbeiten lassen wenn du das Ergebnis schon kennst, schneller wird er dadurch bestimmt nicht. ;-)

Gruß
Peter


Bild


Betrifft: Stimmt!
von: Franz W.
Geschrieben am: 05.10.2003 21:38:35

Hallo Peter,

jetzt hast Du doch wieder das letzte Wort :-)), und ich lass es Dir gerne, es stimmt nämlich! (war nicht so ernst gemeint, weiß schon dass es Dir darum nicht geht!) Bei Deinem Tipp dachte ich zuerst daran, loLetzte durch 2 zu ersetzen. Darum mein Einwand, dass ich's ja noch brauche. Aber Du hast ja geschrieben: "setze loLetzte auf 2", und da hab ich wohl nur etwas schlampig drüber gelesen.

Vielen Dank und Grüße
Franz


Bild


Betrifft: Noch was dazugelernt heute abend :-))
von: Franz W.
Geschrieben am: 05.10.2003 21:16:43

VIELEN DANK EUCH ALLEN !! Da hätt ich noch ne Weile gesucht...

Einen schönen Abend und Grüße
Franz


 Bild

Beiträge aus den Excel-Beispielen zum Thema " bed. formatierung vba-problem"