Registriert seit: 20.04.2014
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
Registriert seit: 12.03.2016
Version(en): Excel 2003
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
Registriert seit: 20.04.2014
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 20.04.2014
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 20.04.2014
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Empo,
das ist mir zu hoch. Ich steige wieder aus.
Gruß Uwe
Registriert seit: 20.04.2014
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• empo