AW:Das Problem ist nicht das CHRW,...
28.01.2015 13:16:25
Daniel
sondern vielleicht daran, dass wenn du auch in der Case-Prüfung das "" durch ChrW(10008) ersetzt und wenn die Zelle zu Beginn leer ist, keiner der benannten Fälle zutrifft und somit auch nichts passiert, weil du dann für diesen "Case Else-Fall" keine Aktion vorgesehn hast.
du solltest als das Case "" durch Case Else ersetzen, damit der Code auf jeden Fall einen Einstieg in die Zeichenschleife findet.
ein weiteres problem ist, dass sich dein Makro bei
Range("A6").Select
in einer Endlosschleife verfängt. Du änderst hier im Code die Selektion und löst damit das Selection-Change-Event aus.
Damit ruft sich das Makro selber auf. Du kannst diesen Selbstaufruf so verhindern:
Application.EnableEvents = False
Range("A6").Select
Application.EnableEvents = True
ausserdem solltest du, auch hier mit Target arbeiten, falls du mal das Häkchen nicht nur in A5, sondern auch in anderen Zellen benötigst:
Application.EnableEvents = False
Target.Offset(1, 0).Select
Application.EnableEvents = True
Prinzipiell bevorzuge ich für solche Aktionen das Doppelklick-Event, das vermeidet hierbei viele Probleme, bspw kann beim Doppelklick-Event das Target immer nur genau eine Zelle gross sein und du musst auch die Selektion nicht verschieben, wenn du die Aktion mehrfach direkt hintereinander ausführen willst.
Beispielsweise bricht dein Code mit einem Fehler ab, wenn du mal zufälligerweise in einer Excelversion 2007 und grösser alle Zellen selektierst (passiert, wenn du auf den Schnittpunkt der Zeilen- und Spaltenüberschriften klickst), weil ein neues Excelblatt mehr zellen hat, als .count zählen kann.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address(0, 0) = "A5" Then
Select Case Target.Value
Case ChrW(10004)
Target.Value = "NV"
Case "NV"
Target.Value = ChrW(10008)
Case Else
Target.Value = ChrW(10004)
End Select
Cancel = True
End If
End Sub
Gruß Daniel