Erste Freie Zeile ab Zeile X
#1
Hey Leute könnt ihr mir eventuell aufzeigen wie der Code lauten müssten wenn ich in die erste Freie Zeile ab z.B. E9 schreiben möchte ?
Also wenn E9 besetzt ist dann in E10 usw.
Was ich bis jetzt gefunden hatte war etwas in die nächste Freie Zeile zu schreiben.

Danke Gruß
Top
#2
Hallo,
Cells(Rows.Count, xxx).End(xlUp).Row
liefert Dir die letzte belegte Zeile in Spalte xxx, wenn nicht gefiltert ist.
Gruß der AlteDresdner (Win11, Off2021)
Top
#3
Range("E9").End(xlDown).Offset(1, 0)
dürfte es eher treffen, wenn Lücken gefüllt werden sollen.
(und ja! eine kleine Fehlerbehandlung schadet nixxx)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Ok das sieht schon mal gut aus. Aber wie müsste ich das dann weiter anweisen wenn er ab dort dann die letzte Zeile auswendig machen soll ?
Top
#5
Hallo,

Zitat:Aber wie müsste ich das dann weiter anweisen wenn er ab dort dann die letzte Zeile auswendig machen soll 

hast Du eigentlich mal einen der Codeschnipsel ausprobiert, die Dir hier geschickt wirden
oder hast Du keine Ahnung, was Du damit machen sollst /kannst?
Top
#6
Hallo,

hier mal einige Beispiele aus dieser Kategorie. Mögen sie Dir weiterhelfen.

Zitat:Option Explicit



Sub letzte_Zeile()
'letzte Zeile in Spalte A suchen
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "Zeile: " & Zeilenanzahl
End Sub



Sub letzte_Spalte()
'letzte Spalte in Zeile 1 suchen
Spaltenanzahl = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox "Spalte: " & Spaltenanzahl & Chr(10) & _
       "Buchstabe: " & SpaltenBuchstaben(Spaltenanzahl)
End Sub



Sub letzteZeile_letzteSpalte()
Dim Zeilenanzahl As Long
Dim Spaltenanzahl As Long
Dim lngi As Long
                                                                'letzte Zeile in Spalte A suchen
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

                                                                'letzte Spalte in der Zeile suchen und
                                                                'Schrifteintag hinter letzter genutzter Spalte
    For lngi = 1 To Zeilenanzahl
        Spaltenanzahl = ActiveSheet.Cells(lngi, Columns.Count).End(xlToLeft).Column
        Cells(lngi, Spaltenanzahl + 1) = "Hallo, hier ist Schluß"
    Next lngi
End Sub

... und wenn das mit ab Zeile x wirklich ernst gemeint war und ich das richtig verstanden habe, dann
ziehst Du eben von der ermittelten Summe das x ab
Top
#7
(30.05.2018, 19:03)RPP63 schrieb: Range("E9").End(xlDown).Offset(1, 0)
dürfte es eher treffen, wenn Lücken gefüllt werden sollen.
Das ist nicht ganz so einfach. End(xlDown) kommt entweder bei der a) nächsten oder bei der b) lokal letzten gefüllten Zelle an. Beides muss daher separat codiert werden. Im Falle a) kann Offset(1,0) nämlich auf eine leere oder gefüllte Zelle treffen.

.End() "toggelt" gewissermaßen, ohne zu wissen, ob es gerade on oder off ist. Also am Anfang oder am Ende (oder beides!) eines gefüllten Bereiches. Daher sind es auch nicht 2 Zustände, sondern noch ein dritter dazwischen.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#8
Hallo Philipp,

das wäre mein Vorschlag:
Sub Makro1()
With Range(Cells(9, 5), Cells(Rows.Count, 5))
If Application.WorksheetFunction.CountBlank(.Cells) Then
With .Find(What:="", After:=.Cells(.Cells.Count), LookIn:=xlValues, LookAt:=xlWhole, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
.Value = InputBox("Hier ist die Zelle " & .Address(0, 0) & ". Ich brauche Input!")
End With
Else
MsgBox "Es gibt keine leeren Zellen im Bereich " & .Address(0, 0) & ".", vbExclamation
End If
End With
End Sub
Gruß Uwe
Top
#9
Pseudocode mit 3 Ausgängen, der letzte von RPP63:

If [E9] = "" Then i = 9 Else If [E10] = "" Then i = 10 Else i = Range("E9").End(xlDown).Offset(1, 0).Row

umzustricken auf "Start Anywhere"
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#10
(31.05.2018, 08:47)LCohen schrieb: Pseudocode mit 3 Ausgängen, der letzte von RPP63:

If [E9] = "" Then i = 9 Else If [E10] = "" Then i = 10 Else i = Range("E9").End(xlDown).Offset(1, 0).Row

umzustricken auf "Start Anywhere"

Geil danke erstmal,
aber wie würde das Klammertechnisch aussehen wenn ich am Ende noch einen festgelegten Wert dort eintragen möchte ?

If [E9] = "" Then i = 9 Else If [E10] = "" Then i = 10 Else i = Range("E9").End(xlDown).Offset(1, 0).Row ).value = "Test"
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste