Registriert seit: 06.05.2023
Version(en): 2019
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?.....
Registriert seit: 12.06.2020
Version(en): 2024, 365business
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
Registriert seit: 06.05.2023
Version(en): 2019
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...
Registriert seit: 11.04.2014
Version(en): Office 365
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.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 06.05.2023
Version(en): 2019
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....
Registriert seit: 11.04.2014
Version(en): Office 365
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.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 18.10.2020
Version(en): 365
21.05.2023, 15:12
(Dieser Beitrag wurde zuletzt bearbeitet: 21.05.2023, 15:17 von Warkings.)
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
Registriert seit: 16.04.2014
Version(en): xl2016/365
Registriert seit: 12.06.2020
Version(en): 2024, 365business
die Lösung könnte einfach das sein .... Cells(13, 21).End(xlUp).....
Registriert seit: 28.08.2022
Version(en): 365
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!
Gruß,
Helmut
Win10 - Office365 / MacOS - Office365