Clever-Excel-Forum

Normale Version: Letzte Zelle mit Wert in Spalte 32 ermitteln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo an alle,

ich arbeite mit excel7 und suche die letzte Zelle mit Wert in "Spalte 32" ab "Zeile 5". Der Wert soll in die aktive Zeile+2 in "Spalte 32" , "Spalte33" und "Spalte34" kopiert werden. In "Spalte34" soll der Wert mit 5 multipliziert werden. gestartet wird das Makro über ein Button.

Im Voraus schon mal vielen Dank

Empo
Hallo

ich bin sehr erstaunt und freudig amüsiert das noch jemand mit dem alten Excel7 arbeitet.  Hut ab.  Hier der Code dazu ...
Bei Worksheets("Tabelle xx") muss noch der richtige Tabellenname angegeben werden! Bitte nicht vergessen.

mfg  Gast 123

Code:
Sub LetzteZelle_kopieren()
Dim Wert As Variant, LastZell As Long
With Worksheets("Tabelle xx")
   Wert = .Cells(Rows.Count, 32).End(xlUp).Value
   LastZell = .Cells(Rows.Count, 32).End(xlUp).Row
   .Cells(LastZell + 2, 32).Resize(1, 3) = Wert
End With
End Sub
Hallo Gast 123,

Vielen Dank für Deinen Code. Das Makro läuft mit 2 Fehlern die von mir verschuldet wurden.

Fehler 1: Das Makro trägt in die "Spalte 32" und "Spalte 33"den Beispielwert "2" ein(richtig). In "Spalte 35" trägt das Makro ebenfalls den Wert "2"ein(falsch), das Makro müßte "2*5" also "10"  eintragen.

Fehler 2: Das Makro trägt die Werte immer in die 2. Zelle unter dem letzten Wert ein. Da habe ich michfalsch ausgedrückt. Es kann durchaus sei, daß in "Spalte 32" mehrmals die Zelle in "Spalte32" leer bleibt. Wenn dies der Fall ist müßte die Reverenz die aktive Zeile der "Spalte1" sein.
Beispiel: Der Letzte Wert in "Spalte32" ist 10 mal leer geblieben also müßte der nächste Wert  in "Spalte32" plus 12 "Zeilen" weiter eingetragen werden.

Ich hoffe die ist einigermaßen verständlich. Vielen Dank für Dein Bemühen

Viele Grüße
Empo
Hallo Empo,
Sub LetztenWertAusAFholen()
Dim Wert As Variant
Wert = Cells(Application.Max(5, Cells(Rows.Count, 32).End(xlUp).Row), 32).Value
If IsNumeric(Wert) Then
Cells(ActiveCell.Row + 2, 32).Resize(1, 2).Value = Wert
Cells(ActiveCell.Row + 2, 34).Value = Wert * 5
Else
MsgBox "Der letzte Eintrag """ & Wert & """ ist keine Zahl!"
End If
End Sub
Gruß Uwe
Hallo Uwe,

vielen Dank für Deinen Code aber er funktioniert nicht richtig.

Beispiel : Wenn der letzte Wert in "Spalte32" in "Zeile15" ist, dann müßte bemi Starten des Makro`s die nächchsten Werte in "Zeile17"; "Spalte32"; "Spalte33"; und "Spalte34" eingetragen werden. Wenn dann in "Zeile 17"; "Spalte1" ein neuer Wert eingetragen ist, sollte das Makro beim Starten  den nächsten Wert in "Zeile19"; "Spalte32"; "Spalte33"; und "Spalte34" eingetragen werden. Also immer 2 Zeilen höher als der letzte Wert in  aktiver Zeile der; "Spalte1". Es kann sein, daß in "Spalte32" mehrmals kein Wert eingetragen wird also das Makro nicht gestartet wird.

Beispiel: Wenn der letzte Wert in "Spalte32" in "Zeile19" eingetragen ist und in "Zeile25"; "Spalte1" ein Wert eingetragen ist, dann ist "Zeile25" die aktive Zeile müßte beim Starten des Makros die Werte von "Zeile19"; "Spalte32" in "Zeile27"; "Spalte32"; "Spalte33" und "Spalte34"   eintragen.

Ich hoffe es ist verständlich.

Viele Grüße
Empo
Hallo Empo,

dass die Spalte 1 relevant ist, lese ich jetzt zum ersten Mal. Bisher ging es nur um die aktive Zeile.
Außerdem startet das Makro immer, wenn man es aufruft, unabhängig davon, wo etwas steht oder nicht steht.

Gruß Uwe
Hallo Uwe,

es ist nicht ganz richtig aber ich habe mich wahrscheinlich falsch ausgedrückt. In einer Antwort bei Fehler 2 habe ich auf die "Spalte1" hingewiesen.

(Fehler 2: Das Makro trägt die Werte immer in die 2. Zelle unter dem letzten Wert ein. Da habe ich mich falsch ausgedrückt. Es kann durchaus sein, daß in "Spalte 32" mehrmals die Zelle in "Spalte32" leer bleibt. Wenn dies der Fall ist müßte die Reverenz die aktive Zeile der "Spalte1" sein.


Bitte nicht verärgert sein.

Viele Grüße
Empo
Hallo Empo,

das ist mir zu hoch. Ich steige wieder aus. Blush

Gruß Uwe
Hallo Uwe,

Bitte nicht aussteigen. Mit dem 2.Fehler wollte ich Dir doch nur zeigen, daß ich auf die Spalte  als Reverenz hingewiesen hab. Bitte vergiß es.

So wie in der Antwort zu Dir ist es richtig. Die Antwort zu Dir schreibe ich nochmals



Beispiel : Wenn der letzte Wert in "Spalte32" in "Zeile15" ist, dann müßte bemi Starten des Makro`s die nächchsten Werte in "Zeile17"; "Spalte32"; "Spalte33"; und "Spalte34" eingetragen werden. Wenn dann in "Zeile 17"; "Spalte1" ein neuer Wert eingetragen ist, sollte das Makro beim Starten  den nächsten Wert in "Zeile19"; "Spalte32"; "Spalte33"; und "Spalte34" eingetragen werden. Also immer 2 Zeilen höher als der letzte Wert in  aktiver Zeile der; "Spalte1". Es kann sein, daß in "Spalte32" mehrmals kein Wert eingetragen wird also das Makro nicht gestartet wird.

Beispiel: Wenn der letzte Wert in "Spalte32" in "Zeile19" eingetragen ist und in "Zeile25"; "Spalte1" ein Wert eingetragen ist, dann ist "Zeile25" die aktive Zeile müßte beim Starten des Makros die Werte von "Zeile19"; "Spalte32" in "Zeile27"; "Spalte32"; "Spalte33" und "Spalte34"   eintragen.



Viele Grüße
Empo
Hallo Empo,
Sub LetztenvarWertAusAFholen()
Dim lngZeile As Long
Dim varWert As Variant
varWert = Cells(Application.Max(5, Cells(Rows.Count, 32).End(xlUp).Row), 32).Value
If IsNumeric(varWert) Then
lngZeile = Application.Max(5, Cells(Rows.Count, 1).End(xlUp).Row)
Cells(lngZeile + 2, 32).Resize(1, 2).Value = varWert
Cells(lngZeile + 2, 34).Value = varWert * 5
Else
MsgBox "Der letzte Eintrag """ & varWert & """ ist keine Zahl!"
End If
End Sub
Gruß Uwe
Seiten: 1 2