Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Letzte Zelle mit Wert in Spalte 32 ermitteln
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
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
Antworten Top
#8
Hallo Empo,

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

Gruß Uwe
Antworten Top
#9
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
Antworten Top
#10
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • empo
Antworten Top


Gehe zu:


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