Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per Doppelklick Wert / Zeichen i.e. Zelle einfügen

per Doppelklick Wert / Zeichen i.e. Zelle einfügen
16.04.2018 16:24:34
Lilli
Hallo Allerseits,
Folgendes Code habe ich irgendwo aus dem Netz genommen um ein Häckchen einzufügen.
Option Explicit 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
If Intersect(Target, Union(Range("A4:J11"), Range("A14:J21"))) Is Nothing Then Exit Sub 
With Target(1) 
    .Font.Name = "Wingdings" 
.Font.Size = 14
.HorizontalAlignment = xlCenter
  .Value = IIf(.Value = "ü", "", "ü") 
    Cancel = True 
End With 
End Sub
 
Das funktioniert einwandfrei
Ich habe folgende Zeile geändert:
  .Value = IIf(.Value = "ü", "û", "ü") 
um einen X zu bekommen. Allerdings kann ich damit nicht mehr bei einem Doppelklick, dass die Zelle geleert wird. Bei den Versuch einen vierten Wert hinzuzufügen, kommt eine Fehlermeldung, die ich gar nicht nachvollziehen kann, da meine VBA Kenntnisse Richtung Null gehen.
Frage 1: Wer kann mir helfen den Code so zu ändern, damit die Zelle geleert werden kann? Also so zu sagen 3 Fälle. Häckchen, Kreuz, Leer beim Doppelklick eingefügt werden kann.
Frage 2: Ich möchte in eine andere Spalte ähnliche Funktion haben, dass ich in eine andere Spalte andere Zeichen "---", "+++" sich einfügen bei einem Doppelklick? Kann man das in dem gleichen Makro machen und wenn ja, wie geht das?
Vielen Dank für die Hilfe im Voraus.
liebe Grüße,
Lilli :)
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
16.04.2018 16:42:12
Gerd
Moin Lilli!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A14:J21")) Is Nothing Then Exit Sub
With Target
.Font.Name = "Wingdings"
.Font.Size = 14
.HorizontalAlignment = xlCenter
If .Value = "" Then
.Value = "ü"
ElseIf .Value = "ü" Then
.Value = "û"
ElseIf .Value = "û" Then
.Value = ""
End If
Cancel = True
End With
End Sub

Gruß Gerd
Anzeige
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
16.04.2018 16:53:33
Lilli
Moin Moin Gerd :)
vielen Dank für Deine schnelle Hilfe. Das ist echt super. Diese End -If Dinger ;)
kann man die weiter erweitern?
kann ich den gleichen Code nutzen für meine zweite Frage?
Vielen Dank für Deine Mühe im Voraus.
liebe Grüße,
Lilli :)
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
16.04.2018 17:09:10
Lilli
Moin Gerd,
kann man auch vielleicht die Farbe mit
.Farbe = Grün (Für Häckchen)
.Farbe = Rot (Für das X)
vielen Dank noch mal.
Liebe Grüße,
Lilli :)
Anzeige
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
16.04.2018 17:31:07
Gerd
Moin Lilli!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A14:J21")) Is Nothing Then Exit Sub
With Target
.Font.Name = "Wingdings"
.Font.Size = 14
.HorizontalAlignment = xlCenter
If .Value = "" Then
.Font.Color = -11489280
.Value = "ü"
ElseIf .Value = "ü" Then
.Font.Color = -16776961
.Value = "û"
ElseIf .Value = "û" Then
.Font.Color = 1
.Value = ""
End If
Cancel = True
End With

Ansonsten könntest du alternativ den Font.Name weglassen u. den Value als String z.B "---" angeben.
Gruß Gerd
Anzeige
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
17.04.2018 09:04:57
Lilli
Moin Gerd,
Vielen Dank für Deinen neuen Code. Wo bekomme ich die Farbenwerte her? Gibt es irgendwo in Excel ein Verzeichnis oder eine Liste im Netz? Die Frage dazu unter welchen Begriff könnte ich das suchen?
Ich wünsche Dir einen schönen Tag noch.
Liebe Grüße,
Lilli :)
AW: per Doppelklick Wert / Zeichen i.e. Zelle einfügen
17.04.2018 09:26:57
Daniel
Hi
Es gibt 256*256*256 verschiedene Farben, da gibt es keine Liste
Wenn du eine bestimmte Farbe haben willst, dann färbe die Zelle damit und gib im Direktfenster den Befehl ein: ?Selection.Font.Color
Dann bekommst du den Farbwert der Zelle angezeigt.
Für die Grundfarben gibt es auch vom System bereitgestellte Variablen: vbRed, vbGreen usw.
Gruß Daniel
Anzeige
Gesamtlösung
16.04.2018 18:16:43
Daniel
Hi
probier mal das Makro
ist zwar etwas tricky, aber du kannst es für verschiedene Zellbereiche mit verschiedenen Inhalten und Farben verwenden.
die Arrays für die unterschiedlichen Zellbereiche können unterschiedlich groß sein, du kannst eine beliebige Anzahl an Werten angeben.
Die Anzahl der Farben muss aber gleich der Anzahl der Werte für einen Zellbereich sein.
Wenn weiter Zellbereiche hinzukommen, musst du lediglich eine weitere ElseIF-Option hinzufügen.
der Rest bleibt gleich.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim x As Long
Dim arrZeichen
Dim arrFarbe
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
arrZeichen = Array("", "ü", "û")
arrFarbe = Array(vbWhite, vbGreen, vbRed)
ElseIf Not Intersect(Target, Range("B3:F9")) Is Nothing Then
arrZeichen = Array("---", "+++", "")
arrFarbe = Array(vbYellow, vbBlue, vbWhite)
Else
Exit Sub
End If
On Error Resume Next
x = WorksheetFunction.Match(Target.Value & "", arrZeichen, 0)
On Error GoTo 0
x = x Mod (UBound(arrZeichen) + 1)
Target.Value = arrZeichen(x)
Target.Font.Color = arrFarbe(x)
Cancel = True
End Sub
Gruß Daniel
Anzeige
AW: Gesamtlösung
17.04.2018 09:15:39
Lilli
Hi Daniel,
ich habe den Makro gestest. Das funzt auch einwandfrei. Ich danke Dir ganz herzlich für Deine Mühe.
Ich habe die Spalten angepasst. Kann man vielleicht bei jeden Bereich die Schriftart noch dazu angeben? Beim ersten Teil handelt es sich um "Wingdings" und bei dem anderen "Calibri".
Gibt es so eine Art wie arrSchriftart?
Vielen Dank für die Mühe.
Liebe Grüße,
Lilli :)
Anzeige
AW: Gesamtlösung
17.04.2018 09:32:08
Daniel
Hi
Kannst du genauso machen wie mit den Farben.

arrSchriftart = Array("Fontname1", "Fontname2", usw)
Target.Font.Name = arrSchriftart(x)
Würde ich aber nur machen wenn die Schriftart beim Klicken wechseln soll.
Bleibt sie für alle Möglichkeiten gleich, würde ich die Zellen normal formatieren
Gruß Daniel
Anzeige
AW: Gesamtlösung
17.04.2018 10:02:56
Lilli
Hallo Daniel,
darf ich Dich um Dein prüfendes Blick noch mal bitten:
Wäre das so in Ordnung:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim x As Long
Dim arrZeichen
Dim arrFarbe
Dim arrSchriftart
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
arrSchriftart = Array("Calibri", "Wingdings","Wingdings")
arrZeichen = Array("", "ü", "û")
arrFarbe = Array(vbWhite, vbGreen, vbRed)
ElseIf Not Intersect(Target, Range("B3:F9")) Is Nothing Then
arrSchriftart = Array("Calibri", "Calibri","Calibri")
arrZeichen = Array("---", "+++", "")
arrFarbe = Array(vbYellow, vbBlue, vbWhite)
Else
Exit Sub
End If
On Error Resume Next
x = WorksheetFunction.Match(Target.Value & "", arrZeichen, 0)
On Error GoTo 0
x = x Mod (UBound(arrZeichen) + 1)
Target.Value = arrZeichen(x)
Target.Font.Color = arrFarbe(x)
Target.Font.Name = arrSchriftart(x)
Cancel = True
End Sub
liebe Grüße,
Lilli :)
Anzeige
AW: Gesamtlösung
17.04.2018 11:11:33
Daniel
probiers doch aus.
wobei ich es lassen würde und die Zellen direkt formatieren würde.
Da bei einer Leerzelle ("") die Schriftart egal ist, ändern sich bei dir die Schriftarten eigentlich nicht, so dass eine Umformatierung im Code nicht notwendig ist.
Gruß Daniel
AW: Gesamtlösung
17.04.2018 13:32:35
Lilli
Hallo Daniel,
ich habe es Probiert und es funzt !!!!
Vielen Dank für Deinen Einsatz. Ich kann den Makro jetzt mehrfach einsetzen. Das ist echt total klasse.
Vielen Dank noch mal für Deine Mühe.
Liebe Grüße,
Lilli :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit Doppelklick Werte in Excel-Zellen einfügen


Schritt-für-Schritt-Anleitung

Um in Excel mit einem Doppelklick auf eine Zelle verschiedene Werte oder Zeichen einzufügen, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Wähle das entsprechende Arbeitsblatt in der Projektansicht aus.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       Dim x As Long
       Dim arrZeichen
       Dim arrFarbe
       If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
           arrZeichen = Array("", "ü", "û")
           arrFarbe = Array(vbWhite, vbGreen, vbRed)
       ElseIf Not Intersect(Target, Range("B3:F9")) Is Nothing Then
           arrZeichen = Array("---", "+++", "")
           arrFarbe = Array(vbYellow, vbBlue, vbWhite)
       Else
           Exit Sub
       End If
       On Error Resume Next
       x = WorksheetFunction.Match(Target.Value & "", arrZeichen, 0)
       On Error GoTo 0
       x = x Mod (UBound(arrZeichen) + 1)
       Target.Value = arrZeichen(x)
       Target.Font.Color = arrFarbe(x)
       Cancel = True
    End Sub
  4. Schließe den VBA-Editor und teste den Doppelklick auf die definierten Zellbereiche.


Häufige Fehler und Lösungen

  • Fehler: "Ausführung des Makros nicht möglich."

    • Stelle sicher, dass du das Makro in der richtigen Arbeitsmappe platziert hast und dass die Sicherheitsstufe für Makros in Excel auf "Aktivieren" gesetzt ist.
  • Fehler: Doppelklick funktioniert nicht.

    • Überprüfe, ob du das richtige Zellintervall im Code definiert hast. Stelle sicher, dass das Makro auf das gewählte Intervall angewendet wird.

Alternative Methoden

Eine alternative Methode zum Einfügen von Werten per Doppelklick ist, die Zellen manuell zu formatieren. Du kannst auch die Excel-Funktion "Datenüberprüfung" verwenden, um vorgegebene Werte in eine Zelle einzufügen, allerdings ist dies nicht so flexibel wie ein VBA-Skript.


Praktische Beispiele

  1. Häkchen und Kreuz einfügen: Um Häkchen (ü) und Kreuze (û) in den Zellen zu wechseln, kannst du den folgenden angepassten Code verwenden:

    If .Value = "" Then
       .Value = "ü"
    ElseIf .Value = "ü" Then
       .Value = "û"
    ElseIf .Value = "û" Then
       .Value = ""
    End If
  2. Farbe ändern: Du kannst die Schriftfarbe je nach Wert ändern. Beispiel:

    If .Value = "ü" Then
       .Font.Color = vbGreen
    ElseIf .Value = "û" Then
       .Font.Color = vbRed
    Else
       .Font.Color = vbBlack
    End If

Tipps für Profis

  • Verwendung von Arrays: Nutze Arrays für verschiedene Zellbereiche, um mehrere Zeichen und Farben dynamisch zu verwalten. Das erleichtert die Anpassung und Erweiterung deines Codes.
  • Debugging: Wenn du auf Fehler stößt, nutze das Direktfenster im VBA-Editor, um Werte und Variablen zu überprüfen.
  • Farbwerte: Um spezifische Farbwerte zu bestimmen, kannst du eine Zelle einfärben und im Direktfenster den Befehl ?Selection.Font.Color verwenden.

FAQ: Häufige Fragen

1. Wie kann ich den Code auf andere Zellen anwenden? Du kannst die Zellbereiche in den Intersect-Befehlen anpassen, um den Code auf andere Zellen anzuwenden.

2. Wo finde ich Farbwerte für Schriftarten? Du kannst Farbwerte über das VBA-Direktfenster abrufen oder die vordefinierten Farbvariablen wie vbRed oder vbGreen verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige