Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

VBA Makro Unicode einfügen Haken ChrW(10008)

VBA Makro Unicode einfügen Haken ChrW(10008)
28.01.2015 11:44:50
braun

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A5")) Is Nothing _
And Target.Count = 1 Then
Select Case Target.Value
Case ChrW(10004)
Target.Value = "NV"
Case "NV"
Target.Value = ""
Case ""
Target.Value = ChrW(10004)
End Select
Range("A6").Select
End If
End Sub

Guten Tag,
bei oben genannten Code würde ich gerne anstatt dem "" ein ChrW(10008) einfügen, allerdings läuft das Makro nicht mehr, wenn ich es ersetze.
Woran könnte das liegen?
Vielen Dank im Voraus

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
K.A., prinzipiell fktt das (in ähnlicher UDF)! orT
28.01.2015 12:35:45
Luc:-?
Gruß, Luc :-?

AW: VBA Makro Unicode einfügen Haken ChrW(10008)
28.01.2015 13:06:04
braun
es funktioniert nur leider nicht.

Tja, dann ist das völlig unklar, denn auch dein...
28.01.2015 13:19:35
Luc:-?
…OriginalPgm fktt problemlos, Braun;
falls du sonst alles richtig gemacht hast - es fktionierte zuvor ja angeblich -, muss es an deiner ProjektUmgebung liegen - ein großes, uns unbekanntes „Könnte“. ;->
Luc :-?

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

Anzeige
A6 ist nicht A5, insofern auch kein SelbstAufruf!
28.01.2015 13:24:03
Luc:-?
Außerdem hatte ich Braun dahingehend verstanden, Daniel,
dass er nicht die Abfrage, sondern die daraus folgende Aktion ändern will!
Gruß, Luc :-?

Du irrst, der Selbstaufruf findet statt!
28.01.2015 13:32:46
Daniel
Es gibt nur keine Endlosschleife, weil zu Beginn eine Prüfung mit Abbruch stattfindet.
Gruß Daniel

Ja, richtig, wollte eigentl auf EndlosSchleife ...
28.01.2015 14:27:26
Luc:-?
…hinaus wie am Vgl zu erkennen!
Luc :-?

AW: Ja, richtig, wollte eigentl auf EndlosSchleife ...
28.01.2015 14:58:22
Daniel
was für ein Vgl?
wenn du "Selbstaufruf" schreibst, dann gehe ich auch davon aus, dass du "Selbstaufruf" meinst.
Gruß Daniel

AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 13:36:23
braun
Danke für deine Hilfe!
Das Range(A6) hat problemlos funktioniert, denn dadurch konnte ich die Zelle durchklicken bis zum gewünschten Symbol, und musste nicht erst in eine andere Zelle und wieder zurück, was beim Weglassen der Fall wäre.
Ich versuche es mal, das Case durch Case else zu ersetzen, allerdings verstehe ich dann nicht,warum es mit "" problemlos geklappt hat, auch der Einstieg.
Wie kann ich dieses Makro auf eine ganze Spalte beziehen? z.B. von B12-100, mit Wechsel zwischen den Symbolen bei durchgehendem Klicken?
Vielen Dank!

Anzeige
AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 13:49:15
Daniel
Hi
mit dem "" beim Case hat es geklappt, weil dass der Wert ist den du hast, wenn die Zelle leer ist, dh wenn du das erste mal auf die Zelle klickst.
Nach deiner Änderung gab es für diesen Fall keine vorgesehne Aktion und du hättest die betroffenen Zellen vorab händisch mit einem der 3 verwendeten Zeichen befüllen müssen.
wenn das Makro für weitere Zellen gelten soll, würde ich beim BeforeDoubleClick-Event bleiben und hier einfach folgende Prüfung einbauen:
if Not Intersect(Target, Range("B12:B100")) Is Nothing Then
Gruß Daniel

Anzeige
AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:09:41
braun

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B12:B100")) Is Nothing And Target.Count = 1 Then
Select Case Target.Value
Case ""
Target.Value = ChrW(10004)
Case ChrW(10004)
Target.Value = ChrW(10008)
Case ChrW(10008)
Target.Value = "N/A"
Case "N/A"
Target.Value = ChrW(10004)
End Select
End If
End Sub

Mit diesem klappt es jetzt super, danke für den Tip :) das einzige Problem dass ich noch habe, ist dass die Zeichen sich sofort ändern, wenn man nacheinander draufklickt, und man nicht erst aus der Zelle rausklicken muss.
Hat da jemand eine Idee? VG

Anzeige
AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:22:58
Daniel
Dann belass es beim Selection-Change-Event
ob man die Zelle dann sofort wieder anklicken kann oder ob man erst rausklicken muss, kannst du hierbei besser steueren, in dem du, wie du es gemacht hast, per Code rausklickst oder nicht (die gerade selektierte Zelle kann nicht nochmal selektiert werden und somit das Makro auch nicht ausgelöst werden).
Ich persönlich finde aber das Doppelklickverhalten angenehmer, aber das kannst du ja selbst entscheiden.
Gruß Daniel

AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:35:21
braun
Okay, danke :)
Gibt es denn eine Möglichkeit Chrw Codes zu kombinieren? Dass ich zb Haken und X in einer Zelle nebeneinander habe? VG :)

Anzeige
AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:54:34
Daniel
Hi
so wie du jedes andere Zeichen auch mit einem anderen Zeichen oder -folge kombnieren kannst, über das Verketten-Symbol &:

ChrW(10004) & ChrW(10008)

Beachte das Leerzeichen vor und nach dem &
Gruß Daniel

AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:18:42
braun

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B12:B100")) Is Nothing And Target.Count = 1 Then
Select Case Target.Value
Case ""
Target.Value = ChrW(10004)
Case ChrW(10004)
Target.Value = ChrW(10008)
Case ChrW(10008)
Target.Value = "N/A"
Case "N/A"
Target.Value = ChrW(10004)
End Select
End If
End Sub

Mit diesem klappt es jetzt super, danke für den Tip :) das einzige Problem dass ich noch habe, ist dass die Zeichen sich sofort ändern, wenn man nacheinander draufklickt, und man nicht erst aus der Zelle rausklicken muss.
Hat da jemand eine Idee? VG

Anzeige
AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 13:58:31
AndrRo
Hallo braun.
hast du die "" an beiden Stellen geändert? Wenn ja, funktioniert dein Code problemlos.
gruß
AndrRo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A5")) Is Nothing _
And Target.Count = 1 Then
Select Case Target.Value
Case ChrW(10004)
Target.Value = "NV"
Case "NV"
Target.Value =  ChrW(10008) 
Case  ChrW(10008) 
Target.Value = ChrW(10004)
End Select
Range("A6").Select
End If
End Sub

AW: AW:Das Problem ist nicht das CHRW,...
28.01.2015 14:06:16
Daniel
Nur dann, wenn die Zelle mit "NV", CHRW(10004) oder CHRW(10008) vorbefüllt ist.
Steht ein anderes Zeichen in der Zelle oder ist die Zelle leer, passiert so nichts.
Deswegen sollte man hier einen Case Else - Fall definieren.
gruß Daniel

Anzeige
stimmt, oT
28.01.2015 14:11:52
AndrRo

stimmt, oT
28.01.2015 14:12:03
AndrRo

stimmt, oT
28.01.2015 14:12:26
AndrRo
AndrRo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige