Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eigenständige Werterfassung in den Zeilen C17 und C16

Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 13:17:56
Henrique
Hallo sehr geehrte excel VBA Profis,

Ich habe versucht ein Makro zuschreiben mit, in dem nach einen neuen Eintrag in der Spalte ‘C’ die Zellen ‘C16’ und ‘C17’ mit werten aus der Spalte C befühlet werden.

Konkret soll der letzte Wert in C16 angezeigt werden und in der Zelle C17 der vorvorletzte Eintrag in der Spalte C.

Für Zelle C16 funktioniert das Problemlos, jedoch aktualisiert sich der Wert in Zelle C17 nicht.

 Private Sub Worksheet_Change(ByVal Target As Range)

Dim LastRow As Long

Application.EnableEvents = False ' Events vorübergehend deaktivieren, um Endlosschleifen zu vermeiden

' Überprüfe, ob die Änderung in Spalte C stattgefunden hat
If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
' Bestimme die letzte Zeile in Spalte C mit Daten
LastRow = Cells(Rows.Count, "C").End(xlUp).Row

' Aktualisiere den Wert in Zelle C16 mit dem letzten Wert in Spalte C
Me.Range("C16").Value = Cells(LastRow, "C").Value
End If

Application.EnableEvents = True ' Events wieder aktivieren
End Sub

Sub AktualisiereC17()
Dim LastRow As Long

' Bestimme die letzte Zeile in Spalte C mit Daten
LastRow = Cells(Rows.Count, "C").End(xlUp).Row

' Aktualisiere den Wert in Zelle C17 mit dem 3. letzten Wert in Spalte C
If LastRow > 1 Then
Me.Range("C17").Value = Cells(LastRow - 2, "C").Value
Else
Me.Range("C17").Value = "" ' Kein 3. letzter Wert verfügbar
End If
End Sub

Fällt jemanden eventuell die Ursache hier für auf ?

Vielen lieben Dank im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 14:00:14
Tor
Hallo,

ich vermute, dass die Werte, die du auslesen willst ueber (also C1:C15) C16 und C17 stehen?
Vielleicht solltest du die Sache auf 2 Spalten verteilen.
Denn, wenn der Code in C16 etwas eintraegt, dann ist die letzte Zelle C16 die letzte benutzte Zelle in dieser Spalte. Somit schaut der Code in C14 nach dem Wert fuer C17.
Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 14:17:54
Henrique
Hey jetzt klingt Fassung für mich mega logisch hahaha, leider kann ich das Lay-out nicht ändern.

Könnte ich den Befehl so um ändern das c16 und c17 gleichzeitig beschrieben werden ?

Oder eignet sich ein anderer trigger ?
Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 16:21:23
GerdL
Hallo Henrique,

noch ein Spielzeug.
Private Sub Worksheet_Change(ByVal Target As Range)


Dim LastRow As Long, beforeLastRow As Long

Application.EnableEvents = False ' Events vorübergehend deaktivieren, um Endlosschleifen zu vermeiden

'keine Mehrfachauswahl
If Target.CountLarge = 1 Then
' Überprüfe, ob die Änderung in Spalte C3:C15 stattgefunden hat
If Not Intersect(Target, Range("C3:C15")) Is Nothing Then
' Bestimme die letzte Zeile in Spalte C2:C15 mit Daten
If Application.CountA(Range("C2:C15")) > 1 Then
LastRow = Range("C2:C15").Find("*", after:=Range("C2"), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious).Row
beforeLastRow = Range("C2:C" & LastRow).Find("*", after:=Range("C" & LastRow), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious).Row
' Aktualisiere den Wert in Zelle C16 mit dem untersten Wert in Spalte C2:C15
Range("C16").Value = Cells(LastRow, "C").Value
' Aktualisiere den Wert in Zelle C17 mit dem zweituntersten Wert in Spalte C2:C15
Range("C17").Value = Cells(beforeLastRow, "C").Value
End If
End If
End If

Application.EnableEvents = True ' Events wieder aktivieren

End Sub



Gruß Gerd
Anzeige
Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 17:25:49
daniel
Hi

meint "vorletzter Wert" den Wert zwei Zeilen über dem letzten Wert?
oder kann es auch Leerzellen dazwischen geben, die nicht mit zählen?

wenns zwei Zeilen drüber meint, dann beispielsweise so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Zelle As Range
If Target.Column = 3 Then
Set Zelle = Cells(Rows.Count, 3).End(xlUp)
Application.EnableEvents = False
Range("C16") = Cells(Rows.Count, 3).End(xlUp).Value
Range("C17") = Cells(Rows.Count, 3).End(xlUp).Offset(-2, 0).Value
Application.EnableEvents = True
End If
End Sub


wenn die Ausgabe nicht in der selben Spalte erfolgen muss sondern in einer Nachbarspalte erfolgen kann, könnte man das auch mit zwei einfachen Formeln lösen:
B16: =Index(C:C;Vergleich("";C:C;-1))

B17: =Index(C:C;Vergleich("";C:C;-1)-2)


Gruß Daniel
Anzeige
Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 14:43:03
Henrique
Hey danke für die Antwort die Zellen sind unterhalb von C17, jedoch egal wie ich probiere das es letzte und vor vorletzten Einträge in besagten Zeilen einzutragen klappt es irgendwie nicht. Leider kann ich das Layout auch nicht ändern.
AW: Eigenständige Werterfassung in den Zeilen C17 und C16
07.09.2023 14:52:26
Tor
Ja jetzt seh ichs erst. Du hast da 2 separate Subs. Aber aus der ersten rufst du die 2. nicht auf. Damit wird die garnicht ausgefuehrt.
So:
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow As Long

Application.EnableEvents = False ' Events vorübergehend deaktivieren, um Endlosschleifen zu vermeiden

' Überprüfe, ob die Änderung in Spalte C stattgefunden hat
If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
' Bestimme die letzte Zeile in Spalte C mit Daten
LastRow = Cells(Rows.Count, "C").End(xlUp).Row

' Aktualisiere den Wert in Zelle C16 mit dem letzten Wert in Spalte C
Me.Range("C16").Value = Cells(LastRow, "C").Value
Me.Range("C17").Value = Cells(LastRow - 2, "C").Value
End If

Application.EnableEvents = True ' Events wieder aktivieren
End Sub

Gruss Tor
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige