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.

Zuletzt geänderte Zelle erkennen
#1
Moin leute :43:

ich empfange mit excel sich ständig verändernde Daten aus 2 externen webanfragen. diese importierten zahlen werden auf excel weiter verarbeitet. aus den 2 datenquellen bekomme ich daten, auf mein excel dokument, nun muss excel den zuletzt aktualisierten (hh : mm : ss) Wert der beiden externen quellen (zb in spalten A und B) erkennen und in Spalte C den sich jeweils zuletzt aktualisierten Wert anzeigen.
bisher hab ichs mit diesem code probiert:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rowUp As Integer, rowDown As Integer, colValue As Integer, colDate As Integer, rngValue As Range

    'Nummer der obersten zu überwachende Zeile
rowUp = 1
    'Nummer der untersten zu überwachende Zeile >>> grosszügig, darf vorläufig tausende von Leerzeilen enthalten
rowDown = 20
        'Spaltennummern als A=1, B=2, C=3 usw
    'Spaltennummer der zu überwachenden Werte > hier A
colValue = 1
    'Spaltennummer mit dem Aenderungsdatum > hier B
colDate = 2

Set rngValue = Range(Cells(rowUp, colValue), Cells(rowDown, colValue))
If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colDate) = Now

End Sub

Das problem nur ist, dieser code erkennt nur manuell, also 'per hand' veränderte zellen und gibt das aktuelle datum richtig wieder. Ändern sich die Zielzellen aufgrund automatischer Änderungen der Zelle, da Die Spalten Zellen A und B jeweils formel haben und von den quelldaten der externen datenquelle abhängen, wird das aktuelle datum nicht angezeigt; der code erkennt es nicht.

ich hoffe ihr könnt mir weiterhelfen :19:
Antworten Top
#2
Hallöchen,
Eventuell kannst Du auch das calculate-Ereignis nehmen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
hallo

wenn ich Worksheet_Change mit Worksheet_Calculate ersetze, steht dort: Fehler beim Kompilieren


Oder anders gefragt. Wie kann ich es erreichen, dass excel zwischen 2 Zahlen (A1, B1) unterscheidet, nachdem welche zuletzt aktualisiert wurde, und die zuletzt aktualisierte in C1 wiedergibt?
Antworten Top
#4
Hallöchen,
Nicht einfach nur ersetzen... Calculate hat keine Parameter.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
nur wie genau mache ich das und wie müsste der passende code aussehen?
Antworten Top
#6
Hallöchen,
Das, was nach ...Change in Klammern steht, muss raus.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
(15.07.2016, 06:27)schauan schrieb: Hallöchen,
Das, was nach ...Change in Klammern steht, muss raus.

Option Explicit

Private Sub Worksheet_Calculate()

Dim rowUp As Integer, rowDown As Integer, colValue As Integer, colDate As Integer, rngValue As Range

    'Nummer der obersten zu überwachende Zeile
rowUp = 1
    'Nummer der untersten zu überwachende Zeile >>> grosszügig, darf vorläufig tausende von Leerzeilen enthalten
rowDown = 20
        'Spaltennummern als A=1, B=2, C=3 usw
    'Spaltennummer der zu überwachenden Werte > hier A
colValue = 1
    'Spaltennummer mit dem Aenderungsdatum > hier B
colDate = 2

Set rngValue = Range(Cells(rowUp, colValue), Cells(rowDown, colValue))
If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colDate) = Now

End Sub
.........................

fehler: variable (Target) ist nicht definiert.
Antworten Top
#8
Hallo sarkami,

teste mal das:
Private Sub Worksheet_Calculate()
 Dim lngZeile As Long
 Dim rngUeberwachung As Range
 Dim varAktuell As Variant
 Static varVorher As Variant
 
 Set rngUeberwachung = Range("A1:B20")
 
 If Not IsArray(varVorher) Then
   varVorher = rngUeberwachung.Value
 Else
   varAktuell = rngUeberwachung.Value
   For lngZeile = 1 To UBound(varAktuell)
     If varAktuell(lngZeile, 1) <> varVorher(lngZeile, 1) Then
       varVorher(lngZeile, 1) = varAktuell(lngZeile, 1)
       rngUeberwachung.Cells(lngZeile, 3).Value = varAktuell(lngZeile, 1)
       Exit For
     ElseIf varAktuell(lngZeile, 2) <> varVorher(lngZeile, 2) Then
       varVorher(lngZeile, 2) = varAktuell(lngZeile, 2)
       rngUeberwachung.Cells(lngZeile, 3).Value = varAktuell(lngZeile, 2)
       Exit For
     End If
   Next lngZeile
 End If
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sarkami
Antworten Top
#9
das sieht doch mal auf den ersten blick hervorragend aus! 
dank dir Kuwer Thumps_up
Antworten Top
#10
ein kleines problem gibts es noch,


bei der formel von kuwer wird immer wenn der aktualisierungsvorgang (alt+F5) startet (beziehe externe daten ausm web), immer nur der erste gefundene neue Wert in Spalte 3 wiedergebeben. solange sich in den Zellen A1:B20 nur ein Wert per Aktualisierung verändert, stimmt auch alles, ändern sich hingegen bei der aktualisierung mehrere Werte gleichzeitig, ZB A1 und A10 und A12, steht nur in C1 der neue Wert (A1). C10 und C12 hingegen bleiben leider unverändert; anscheinend sucht die formel den ersten veränderten Wert und ignoriert dann alle weiteren. Da sich pro rechenvorgang (alt+F5) meist mehrere werte ändern, führt die formel dazu, dass meist C1 (neuester Wert aus A1 oder B1) bis C3 (neuester Wert aus A3 oder B3) regelmässig aktualisisiert sind, die unteren C Werte ab C5 hingegen gar nicht.

Wie müsste ich die Formel anpassen damit alle zeitgleich angepasst werden?
Antworten Top


Gehe zu:


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