09.02.2014 Aufrufe

Ein VBA-Programm in Excel

Ein VBA-Programm in Excel

Ein VBA-Programm in Excel

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!