Anzeige
Archiv - Navigation
1816to1820
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
Doppelklick Event in jeder 2. Zelle
11.03.2021 13:31:56
Simon
Hallo,
ich versuche gerade VBA zu verstehen, bisher leider nur mit mäßigem Erfolg, daher folgendes Problem:
ich möchte, dass bei Doppelklick auf eine Zelle in einer bestimmten Spalte zwischen zwei Werten _ umgeschaltet wird. In diesem Fall Wäre das Sieg/Niederlage. Das habe ich auch soweit hinbekommen, allerdings soll das Ganze nur in jeder zweiten Zelle (gerade Werte) der Spalte geschehen. Aus dem Internet konnte ich mir diesen Code zusammenschustern. Leider wird das mit den geraden Werte komplett ignoriert und ich kann weiterhin in der ganzen Spalte per Doppelklick die Werte togglen.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Zeile As Long
With Sheet1
For Zeile = 2 To .UsedRange.Rows.Count
If Target.Column = 8 And Zeile Mod 2 = 0 Then
Target.Value = IIf(Target.Value = "Win", "Lose", "Win")
Cancel = True
End If
Next Zeile
End With
End Sub
Hintergrund ist folgender: Ich habe einzelne Blöcke bestehend aus einer Überschriftszeile gefolgt von zwei bis 4,6, 8 oder ... Zeilen-Zweierblöcken mit Daten in denen in der einen Zeile Win und in der anderen dann abhängig von der ersten Lose steht (oder, wenn durch Doppelklick die erste Zeile zu Lose wird, andersherum).
Diese Blöcke werden nun per Klick auf einen Button in einer UserForm kopiert und mit einer Zeile Abstand untereinander gefügt. Ich möchte, dass in den Blöcken an der richtigen Stelle, also direkt unter der Überschriftszeile und dann in jeder zweiten Zelle bis zum Ende des Blocks zwischen Win/Lose gewechselt werden kann, sodass sich die jeweilig darunter befindende Zelle auf dieses Wort Bezug nehmen kann und sich dann das Gegenteil annimmt.
Würde mein Code von oben funktionieren, würden zwar auch die Leerzeilen zwischen den Blöcken mitumfasst, solange man da aber nicht doppelklickt, sollte das kein Problem sein.
Ursprünglich hatte ich das DoppelklickEvent nur bezogen auf eine Absolute Zelle und wollte den VBA Code, der sich auf diese Zelle bezieht wie eine in der Zelle selbst hinterlegte Formel mit kopieren. Da das aber meines Wissens nicht möglich ist, meine andere "Lösung"
Nun zu meiner Frage: Könnte man den obigen Code so modifizieren, dass er funktioniert oder (Falls man den Hintergrund verstehen konnte) gibt es sogar eine bessere Lösung für mein Problem.
Ich hoffe das war nicht allzu unverständlich. Falls es unbedingt nötig ist, kann ich auch eine Datei hochladen. Schonmal vielen Dank für Lösungsversuche
Grüße Simon

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 13:47:30
Nepumuk
Hallo Simon,
zu kompliziert gedacht. Einfach so:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 8 And Target.Row Mod 2 = 0 Then
        Target.Value = IIf(Target.Value = "Win", "Lose", "Win")
        Cancel = True
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 16:13:30
Simon
Vielen Dank, funktioniert super! Da hatte ich es ja sogar fast richtig gemacht :D
Gruß
Simon

AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 13:47:56
peterk
Hallo

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 8 And (Target.Row Mod 2) = 0 Then
Target.Value = IIf(Target.Value = "Win", "Lose", "Win")
Cancel = True
End If
End Sub


AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 16:14:44
Simon
Vielen Dank, funktioniert einwandfrei!

AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 13:49:40
Rudi
Hallo,
so?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 8 And Target.Row Mod 2 = 0 Then
Target.Value = IIf(Target.Value = "Win", "Lose", "Win")
End If
Cancel = True
End Sub

Gruß
Rudi

Anzeige
AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 16:20:43
Simon
Hallo,
Vielen Dank für die Lösung! Leider kann ich aber das restliche Tabellenblatt nicht mehr bearbeiten. Wenn ich aber "End IF" und "Cancel = True" vertausche, funktioniert es super. Vielen Dank!
Gruß
Simon

AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 14:00:03
ChrisL
Hi Simon
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 8 Then
Target.Value = IIf(Target.Value = "Win", "Lose", "Win")
If Target.Row Mod 2 Then
Target.Offset(-1, 0) = IIf(Target.Value = "Win", "Lose", "Win")
Else
Target.Offset(1, 0) = IIf(Target.Value = "Win", "Lose", "Win")
End If
Cancel = True
End If
End Sub
cu
Chris

Anzeige
AW: Doppelklick Event in jeder 2. Zelle
11.03.2021 16:24:10
Simon
Hi Chris,
Vielen Dank für deine Lösung! Da spar ich mir sogar noch eine Formel, super!
Gruß
Simon

54 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige