Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

letzte Zeile in bestimmten Bereich ausfüllen
#1
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?.....
Antworten Top
#2
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
Antworten Top
#3
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...
Antworten Top
#4
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
Antworten Top
#5
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....
Antworten Top
#6
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
Antworten Top
#7
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
Antworten Top
#8
Geht bei herber weiter:
https://www.herber.de/forum/archiv/1928t...reich.html
Antworten Top
#9
die Lösung könnte einfach das sein .... Cells(13, 21).End(xlUp).....
Antworten Top
#10
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
Antworten Top


Gehe zu:


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