Clever-Excel-Forum

Normale Version: letzte Zeile in bestimmten Bereich ausfüllen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
moin...

mal wieder ein kleines Problem, welches ich nicht gelöst bekomme:

Dim rtwletzte As Integer
 
rtwletzte = ThisWorkbook.Worksheets("Protokoll").Cells(14, 21).End(xlUp).Row + 1
 
    ThisWorkbook.Worksheets("Protokoll").Cells(rtwletzte, 21).Value = Tabelle1.Range("V9").Value
    ThisWorkbook.Worksheets("Protokoll").Cells(rtwletzte, 22).Value = Tabelle1.Range("Y9").Value
    ThisWorkbook.Worksheets("Protokoll").Cells(rtwletzte, 23).Value = Tabelle1.Range("W11").Value
    ThisWorkbook.Worksheets("Protokoll").Cells(rtwletzte, 27).Value = Tabelle1.Range("AC9").Value
    ThisWorkbook.Worksheets("Protokoll").Cells(rtwletzte, 29).Value = Tabelle1.Range("AC11").Value

das ist der Code zum Eintragen von Daten....
Die Eintragungen sollen ab Zeile 14 beginnen, da Zeile 13 beschrieben ist...bei Zeile 18 soll die letzte Eintragung möglich sein....

das gleiche brauche ich dann später nochmal ab Zeile 28...Ende bei Zeile 31

alles in den gleichen Spalten....

Nun aber zum Problem:
mache ich eine Eintragung, werden die Daten in die Felder geschrieben....bei einer weiteren Eintragung wird aber die erste Eintragung überschrieben....

Wo liegt mein Fehler?.....
Tabelle1.Range("V9").Value 
wenn der Wert leer geblieben ist ,dann wird die letzte Zeile wie aus der vorherigen Eintragung ermittelt aus Spalte 21

setze eine Haltepunkt und prüfe der Wert von rtwletzte
da habe ich auch schon dran gedacht...aber diese Zelle ist nicht leer.....denn die Daten werden beim ersten Mal ja übertragen....
nur bei einer weiteren Eintragung wird die erste Eintragung komplett überschrieben...also alle 5 Spalten, die bereits ausgefüllt waren...
Hallo,

Zitat:Wo liegt mein Fehler?.....

meiner Ansicht nach darin, dass es im Normalfall egal sein sollte, wo die Daten stehen. Wenn es bei dir eine begründete Ausnahme dieser Regel geben sollte, wäre es hilfreich, wenn du eine Beispieldatei hochlädst, dann kann man sehen, was geht.
Moin Klaus-Dieter,

ich kann dazu keine Datei hochladen, weil die viel zu groß und komplex ist...

Der Code existiert als Sub und wird durch einen Button aktiviert....wie schon erwähnt, wird das auch nochmals an anderer Stelle nötig...

Ich möchte nur wissen, wo mein Denkfehler in dieser Programmierung ist....
Hallo Stefan,

Zitat:Ich möchte nur wissen, wo mein Denkfehler in dieser Programmierung ist....

meiner Ansicht nach besteht der Fehler im Aufbau der Datei. Eine Liste besteht normalerweise aus einer bestimmten Anzahl von Spalten und Zeilen. Wobei jede Zeile für einen Datensatz steht. Es sollte also keinen Grund geben, bestimmte Inhalte in bestimmte Zeilen zu schreiben. Im übrigen hatte ich nach einer Beispieldatei, nicht nach der Originaldatei gefragt. Es geht mir nur darum, zu verstehen, warum es diese Anordnung geben soll, die aus EDV-Sicht eher fragwürdig ist.
Der Code funktioniert so wie erwartet. Wenn Du was anderes erwartest, musst Du Deine Erwartung klar und prägnant artikulieren, das ist Dir IMHO bisher nicht gelungen.
Abgesehen davon, wer zu faul ist eine Beispieldatei zu erstellen (das Original wird nicht erwartet), kann das gerne sein.
Ich verabschiede mich daher wieder auf die Zuschauertribüne und hole Popcorn

Code:
Function FindLastRow(rg As Range) As Long
   
    On Error GoTo EH
   
    FindLastRow = rg.Find("*", , Lookat:=xlPart, LookIn:=xlFormulas _
            , searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Exit Function
EH:
'   If Err.Number = 91 Then
'        MsgBox "No data found for range [" & rg.Address & "]. Last row will be set to first row of range."
'    End If
    FindLastRow = rg.Cells(1, 1).Row
End Function
die Lösung könnte einfach das sein .... Cells(13, 21).End(xlUp).....
aus der bisherigen Beschreibung würde ich eher sagen

....Cells(12, 21).End(xlDown).Row + 1

Aber auch nur, wenn ab Zeile 19 bis Zeile 27 die Spalte 21 ("U") durchgehend belegt ist.

Ansonsten deutet allerdings alles auf eine ungünstige Datenanordnung hin. Dort sollte eigentlich mit der Problemlösung angesetzt werden!