Das Ziel meines Codes ist es, den alten Wert einer Zelle zu nehmen, und überprüfen Sie es mit einem neuen Wert, wenn es eingegeben wird. Wenn sich der alte Wert in einen neuen Wert ändert, aktualisieren Sie das Datum in einer angegebenen Zelle.Typ Mismatch Fehler Excel VBA
Das Problem mit meinem Code ist, dass ich keinen Weg finden kann, um diesen Fehler zu umgehen, ohne dass mein Code bricht, also habe ich Probleme, diese eine Codezeile zu beheben. Ich habe diesen Code in zwei Arbeitsblättern, beide mit ihren für verschiedene Zellen geänderten Werten. Das Problem ist, dieser Code funktioniert nur, wenn es für ein Arbeitsblatt ist, aber wenn ich zwei mit dem gleichen Code verwende, löst es einen Typenkonfliktfehler aus.
Hier ist mein Code:
Dim oldValue As Variant
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
'My other worksheet is referencing cells E2:E100
oldValue = Me.Range("D4:D21").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D4:D21")) Is Nothing Then
Dim c As Range
For Each c In Intersect(Target, Me.Range("D4:D21"))
'Check value against what is stored in "oldValue"
'Type mismatch is on this line here
If oldValue(c.Row - 3, 1) <> c.Value Then
'Update value in column L (8 columns to the right of column D)
c.Offset(0, 7).Value = Date 'or possibly "= Now()" if you need the time of day that the cell was updated
End If
Next
End If
End Sub
Ich bin nicht sicher, welche Art Mismatch Fehler bedeutet, also bin ich nicht in der Lage, dieses Problem selbst zu beheben. Meine Frage ist, wie kann ich meine Zellen richtig aktualisieren, ohne dass dieser Mismatch-Fehler auftritt?
EDIT: Denken Sie daran, ein Arbeitsblatt sucht nach numerischen Datenänderungen, und das andere Arbeitsblatt sucht nach Zeichenfolge Wertänderungen, ich bin mir nicht sicher, ob das von Bedeutung ist. Wenn ich den ganzen Code für ein Arbeitsblatt herausnehme, funktioniert der Code für den anderen, aber wenn ich ihn wieder einfüge, hören beide auf zu arbeiten.
Vielen Dank.
Ich erkenne diesen Code! – YowE3K
Haha, ja, ich bin wieder da: p – juiceb0xk
Ich nehme an, dass das 'Change'-Ereignis ausgelöst wurde, ohne dass das' SelectionChange'-Ereignis zuvor ausgelöst wurde. Möglicherweise war die Zelle, die aktualisiert wurde, die ausgewählte Zelle, als die Arbeitsmappe geöffnet wurde? Sie müssen möglicherweise erzwingen, die 'SelectionChange' Ereignisse auszulösen, wenn die Arbeitsmappe erstmals geöffnet wird, oder sicherstellen, dass die Arbeitsmappe nicht mit der Auswahl irgendwo in D4 gespeichert wird: D21. – YowE3K