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