Ein VBA-Programm in Excel
Ein VBA-Programm in Excel
Ein VBA-Programm in Excel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel<br />
As Boolean)<br />
Cancel = True<br />
Dim rng As Range<br />
If Intersect(Target, Worksheets(1).Range("B:C")) Is Noth<strong>in</strong>g Then<br />
Exit Sub<br />
If Target.Row = 1 Then Exit Sub<br />
If Target.Column = 2 Then<br />
If Target.Interior.ColorIndex = 4 Then<br />
'Color 4 = Farbe Grün<br />
Cells(Target.Offset(0, 2) + 1, 6) = "" 'Sp-Name löschen<br />
Cells(Target.Offset(0, 2) + 1, 5) = "" 'Sp-Nr löschen<br />
Target.Offset(0, 2).Value = ""<br />
'Nr <strong>in</strong> Spalte D löschen<br />
Target.Interior.ColorIndex = 0<br />
'Farbe zurücksetzen<br />
Target.Offset(0, 1).Interior.ColorIndex = 0<br />
Target.Offset(0, 1).Value = ""<br />
Target.Value = ""<br />
Range("I8").Value = Range("I8").Value - 1 'Anzahl Spieler<br />
Range("I9").Value = Range("I8").Value \ 4 'Anzahl Tische<br />
Range("I10").Value = Range("I8").Value Mod 4 'Anzahl 5er-Tische<br />
Else<br />
'<strong>in</strong> Liste aufnehmen<br />
If Target.Offset(0, 2) "" Then<br />
Target.Interior.ColorIndex = 4<br />
Target.Value = Chr(252)<br />
Exit Sub<br />
Else<br />
If Target.Offset(0, -1).Value = "" Then<br />
Exit Sub<br />
End If<br />
End If<br />
For Each rng In Worksheets(1).Range("F:F").Cells<br />
If IsEmpty(rng) Then<br />
lz = rng.Row<br />
rng = Target.Offset(0, -1).Value<br />
Target.Offset(0, 2).Value = lz - 1<br />
Cells(lz, 5).Value = lz - 1<br />
Target.Value = Chr(252)<br />
Target.Offset(0, 1).Value = Chr(252)<br />
Target.Interior.ColorIndex = 4<br />
Target.Offset(0, 1).Interior.ColorIndex = 4<br />
Range("I8").Value = Range("I8").Value + 1<br />
'erste freie Zelle <strong>in</strong><br />
Spalte "F"<br />
'Anzahl Spieler<br />
'Anzahl Tische<br />
Range("I9").Value = Range("I8").Value \ 4<br />
Range("I10").Value = Range("I8").Value Mod 4 'Anzahl<br />
5er-Tische<br />
End<br />
End If<br />
Next rng<br />
End If<br />
List<strong>in</strong>g 2<br />
Sub<br />
Worksheet_BeforeDouble<br />
Click(ByVal Target As<br />
Range, Cancel As<br />
Boolean)<br />
Abfrage e<strong>in</strong>er angeklickten<br />
Zelle <strong>in</strong> Spalte "B" auf Farbh<strong>in</strong>tergrund:<br />
falls grün (ColorIndex=4),<br />
dann Teilnehmer aus Liste <strong>in</strong><br />
Spalte "F"<br />
löschen, sonst<br />
Spieler neu <strong>in</strong> Spalte "F"<br />
aufnehmen<br />
Zu diesem List<strong>in</strong>g bedarf es nun e<strong>in</strong>iger Erläuterungen.<br />
Mit der Methode Intersect wird sichergestellt, dass nur dann weitere<br />
Aktionen stattf<strong>in</strong>den, wenn sich die aktuell markierte Zelle im Zielbereich<br />
Range("B:C") bef<strong>in</strong>det. Auch der Doppelklick <strong>in</strong> die 1. Zeile Target.Row<br />
= 1 soll ke<strong>in</strong>e weitere Aktion nach sich ziehen.<br />
Was passiert nun aber, wenn <strong>in</strong> Spalte "B" oder "C" e<strong>in</strong>e Zelle angeklickt<br />
wird? Der <strong>E<strong>in</strong></strong>fachheit halber soll hier nur das Vorgehen für die Spalte<br />
"B" (= bezahlt) erläutert werden: If Target.Column = 2 . Die Codierung<br />
für Spalte "C" (= anwesend") kann als Übung (s. Übung 3) dienen.<br />
18