Buchstaben durch Klick automatisch eingeben?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du könntest auf das Worksheet-Ereignis SelectionChange reagieren.

Falls es dich stört, dass das auch darauf reagiert, wenn du mit den Pfeiltasten dorthin gehst, kannst du auch auf das Ereignis BeforeDoubleClick reagieren - dann passiert nur was bei Doppelklick. Das erfordert dann aber einen Doppelklick. (Einen Ereignishandler für einen einfachen Klick habe ich nicht gefunden - nur einen für einen Rechtsklick: BeforeRightClick)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = 1 Then
If Target.Column = 4 Then 'Spalte D; für andere Spalten entsprechend anpassen
If Me.Cells(Target.Row, Target.Column - 1).Value <> Empty Then 'Nur ausführen, wenn in der Zelle links von der angeklickten auch was steht
Target.Value = "SelectionChange"
End If
End If
End If
End Sub

bzw.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Cells.Count = 1 Then
If Target.Column = 4 Then 'Spalte D; für andere Spalten entsprechend anpassen
If Me.Cells(Target.Row, Target.Column - 1).Value <> Empty Then 'Nur ausführen, wenn in der Zelle links von der angeklickten auch was steht
Target.Value = "DoubleClick"
Cancel = True 'Verhindert, dass die Zelle dann auch "betreten" wird
End If
End If
End If
End Sub

bzw.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Cells.Count = 1 Then
If Target.Column = 4 Then 'Spalte D; für andere Spalten entsprechend anpassen
If Me.Cells(Target.Row, Target.Column - 1).Value <> Empty Then 'Nur ausführen, wenn in der Zelle links von der angeklickten auch was steht
Target.Value = "RightClick"
Cancel = True 'Verhindert, dass das Kontextmenü aufgerufen wird
End If
End If
End If
End Sub

Oubyi, UserMod Light  17.06.2017, 17:07
DH!

Ich habe mir jetzt die Frage nochmal durchgelesen und  denke, dass Du es richtig verstanden hast und ich es zu kompliziert ausgelegt habe, indem ich nach jedem Klick einen anderen Eintrag aus einer Liste generiere und das quasi als Schleife.
Ich hatte gedacht! die Einträge sollten je nach Wert der Zelle in eine andere Tabelle übernommen werden.
So war das aber wohl gar nicht gemeint - wenn ich mir die Frage nochmal genau ansehe, sondern es gibt nur eine Tabelle.

P.S.: Allerdings bin ich mir nicht böse wegen der Zeitverschwendung, denn meine Lösung werde ich mir merken, da die imho für andere Aufgabenstellungen recht interessant sein kann. 🙂

1
Oubyi, UserMod Light  17.06.2017, 18:01
@Oubyi, UserMod Light

P.S.:
Weil ich gerade Deinen Kommentar zu Maximus' Antwort lese.
Mit:
Target.Value = ChrW$(&H2714)
kannst Du auch ein schönes Häkchen direkt in die Zelle setzen, dann gibt es kein Problem beim Sortieren.

1
ernkie 
Fragesteller
 18.06.2017, 09:01
@Oubyi, UserMod Light

Ganz gute Idee. Hab bis jetzt einfach ein x-beliebigen Buchstaben angegeben. In den Auswertungen kommt es sowieso als "X". Sieht so aber schon "aufgeräumter" auf. Danke

0
ernkie 
Fragesteller
 18.06.2017, 08:51

Hab mich für die erste Variante entschieden. (Aufwandminimierung 🙂)

Dann noch das Target.Value = "SelectionChange" gem. Anregung von Oubyi auf  = ChrW$(&H2714) gewechselt. 

Funktioniert einwandfrei und sieht super aus! DANKE und schönen Sonntag.

1

Wenn ich dich richtig verstehe, möchtest du nicht jedes Mal einen Begriff in die Zelle neben dem Artikel eingeben, sondern aus einer vorgefertigten Liste einen Begriff auswählen?

Wenn dem so ist, würde ich mit einem Dropdownfeld arbeiten. Wie du dieses in Excel erstellst, steht hier:

https://support.office.com/de-de/article/Erstellen-von-Dropdownlisten-7693307a-59ef-400a-b769-c5402dce407b


ernkie 
Fragesteller
 17.06.2017, 15:28

Danke
Suche aber eine Möglichkeit, um mit einem Klick in die Zelle (ohne weitere Eingabe) den Wert der Zelle zu verändern

0
Maximus68  17.06.2017, 15:31
@ernkie

Also nehmen wir an, in Zelle A1 steht Opel, dann möchtest du in A2 klicken und dort soll dann "Auto" stehen? 
Ich kenne diese Funktion nur mit Kontrollkästchen, aber das ein bestimmter Text erscheint, wenn man in die Zelle klickt, ist mir unbekannt.

0
ernkie 
Fragesteller
 17.06.2017, 16:27
@Maximus68

Steuerelement/Kontrollkästchen war ein gutes Stichwort. Aber - die ganze Tabelle soll auch sortiert werden und ich kriege es (noch) nicht hin, dass die Kästchen in der richtigen Zeile bleiben. Kannst Du mir da weiterhelfen? Danke

0
Maximus68  18.06.2017, 10:40
@ernkie

So aus dem Stehgreif leider auch nicht. Müsste das selber mal bei Gelegenheit probieren. Wenn ich es schaffe, melde ich mich gern wieder.

0

Suche aber eine Möglichkeit, um mit einem Klick in die Zelle (ohne weitere Eingabe) den Wert der Zelle zu verändern

Heißt das, Du willst quasi eine Liste "durchklicken"?
Da sehe ich das Problem, dass es in VBA kein Ereignis gibt - soweit ich weiß - das einen einfachen Klick in die Zelle abfängt.
Es muss schon ein Doppelklick sein.
DAS würde, für den Bereich B1:B100, so funktionieren:

Mach einen Rechtsklick auf den Tabellenreiter (unten, da wo z.B. Tabelle1 steht) und gehe dann auf "Code anzeigen...".
In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
Select Case Target.Value
Case ""
Target.Value = "Egal_A"
Cancel = True
Case "Egal_A"
Target.Value = "Egal_B"
Cancel = True
Case "Egal_B"
Target.Value = "Egal_C"
Cancel = True
Case "Egal_C"
Target.Value = "Egal_D"
Cancel = True
Case "Egal_D"
Target.Value = ""
Cancel = True
End Select
End If
End Sub

Die Datei musst Du danach aber als .xlsm speichern, und Makros zulassen.

Bei Doppelklick in eine der Zellen im Bereich B1:B100 wird dann die Liste pro Klick von Leer über "Egal_A/B/C/D" bis wieder zu Leer durchlaufen.

Das ist erstmal nur ein primitives Beispiel und lässt sich sicherlich optimieren und auch erweitern.
Wäre das ein Ansatz für Dich?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

Oubyi, UserMod Light  17.06.2017, 17:11

P.S.:
Da habe ich wohl mal wieder zu kompliziert gedacht und die Aufgabenstellung war einfacher und wurde von PWolf (DH!) sehr gut gelöst (siehe meine Kommentar dort).
Allerdings bin ich mir nicht böse wegen der Zeitverschwendung, denn meine Lösung werde ich mir merken, da die imho für andere Aufgabenstellungen recht interessant sein kann. 🙂

0