Hallo allerseits :),
Ich habe eine ziemlich große "Anwendung" geschrieben und denke nicht das es notwendig ist diese auszuweiten.
Ich habe mehrere Hotkeys für meine Anwendung hinterlegt, unter anderem Return.
Mein Problem ist nun folgendes :
Ich gehe mit jedem Druck auf Return zum nächsten von 4 spezifischen Feldern in denen Preise stehen.
Dies bewerkstellige ich Mithilfe von Bedingungen die nach der aktiven Zelle fragen und die Markierung daraufhin zur nächsten senden.
Bei einem weiteren Druck auf Return in der 4ten Zelle wird ein Dialog geöffnet in dem nach Übernahme der geänderten Daten gefragt wird.
Das ganze funktioniert auch wunderbar .... Esseiden eines der 4 Felder hat denselben Wert(Preis) wie ein anderes.
In diesem Fall scheint Excel die Zellen zu "verwechseln" und springt trotz klarer Bedingung die False ergibt in die If-Schleife und somit schlussendlich zu einer vorherigen Zelle zurück.
Wie kann das sein? Was verwirrt Excel so? Ich habe mit den Werten in dieser Schleife doch garnichts getan....
Obwohl ich denke schon eine Lösung gefunden zu haben um das Problem zu umgehen, bin ich sehr gespannt auf Eure Antworten, da der Sachverhalt mir schon recht merkwürdig erscheint. :)
Private Sub Enter()
Application.ScreenUpdating = False
'# Prüfe ob aktuell im Terminal und gehe zu nächster Position.
If Not ActiveCell = Range("D39") And Not ActiveCell = Range("D40") And Not ActiveCell = Range("G39") And Not ActiveCell = Range("G40") Then
'# Prüfe ob Auswahl ein Kalendertag ist.
If CheckError.IsError(Selection) Then Exit Sub
ActiveSheet.Unprotect Password:="0444786400"
With Selection
.Font.ThemeColor = xlThemeColorDark1
.Font.TintAndShade = 0
.Borders(xlEdgeLeft).Weight = xlThick
.Borders(xlEdgeRight).Weight = xlThick
.Borders(xlEdgeTop).Weight = xlThick
.Borders(xlEdgeBottom).Weight = xlThick
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="0444786400"
'# Gehe zu Preisfeld und markiere Inhalt.
Range("D39").Select
SendKeys "{F2}", True
SendKeys "+(^{LEFT})"
ElseIf ActiveCell = Range("D39") Then
Range("D40").Select
SendKeys "{F2}", True
SendKeys "+(^{LEFT})"
ElseIf ActiveCell = Range("D40") Then
If Range("AB1").Value = True Then
Range("I34:L34").Select
Answer = MsgBox("Änderungen für Auswahl übernehmen?", vbYesNo, "Änderungen übernehmen")
If Answer = vbYes Then
Dateisystem.Speichern
Else
Range(Range("C36").Value).Select
End If
Else
Range("G39").Select
SendKeys "{F2}", True
SendKeys "+(^{LEFT})"
End If
ElseIf ActiveCell = Range("G39") Then
Range("G40").Select
SendKeys "{F2}", True
SendKeys "+(^{LEFT})"
ElseIf ActiveCell = Range("G40") Then
Range("I34:L34").Select
Answer = MsgBox("Änderungen für Auswahl übernehmen?", vbYesNo, "Änderungen übernehmen")
If Answer = vbYes Then
Dateisystem.Speichern
Else
Range(Range("C36").Value).Select
End If
End If
End Sub
Gruß Samuel Will
|