jh schrieb am 17.09.2007 10:55:46:
Hallo noch mal,
damit wir nicht noch lange hin und her schreiben, am besten hier ein Beispiel, ob du es verwenden kannst oder willst, musst du selbst sehen.
Damit du die Checkboxen nicht von Hand in dein Worksheet basteln musst, hier eine Sub, die das erledigt. Du brauchst sie nur einmal und kannst sie danach wieder löschen. Mache vorsichtshalber eine Sicherheitskopie von deiner Datei, bevor du sie aufrufst.
Sub CheckBoxenEinfuegen()
Dim chkA As Object, rngA As Range, lngI As Long
lngI = 1
For Each rngA In ActiveSheet.Range("A7:D24").Cells
Set chkA = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CheckBox.1", _
Left:=rngA.Left + 1, Top:=rngA.Top + 1, _
Height:=rngA.Height - 2, Width:=rngA.Height - 2)
With chkA
.Object.Caption = ""
.Object.BackColor = vbWhite
.LinkedCell = "IV" & CStr(lngI)
.Object.Value = False
End With
ActiveSheet.Cells(lngI, 255).Value = rngA.Address
lngI = lngI + 1
Next rngA
End Sub
Kurz zur Erläuterung, jede Checkbox hat eine LinkedCell in der letzten Spalte des Blattes (IV), wo der aktuelle Wert der Box steht. Jeweils links daneben befindet sich die Adresse der dazugehörigen Zelle, anhand derer sie später ausgewählt werden kann.
Bevor du dann deine Berechnung startest, rufst du den folgenden Code auf. Damit werden alle Zellen, in deren Checkbox sich ein Häkchen befindet, ausgewählt.
Sub ZellenMitAktivierterCheckboxAuswaehlen()
Dim strA As String, rngA As Range
For Each rngA In ActiveSheet.Range("IV1:IV72").Cells
If rngA.Value = True Then
strA = strA & rngA.Offset(0, -1).Value & ","
End If
Next rngA
If strA <> "" Then
strA = Left$(strA, Len(strA) - 1)
ActiveSheet.Range(strA).Select
End If
End Sub
Falls du dein Makro zur Berechnung mit einer Tastenkombination aufrufst: Das funktioniert nicht, wenn zu diesem Zeitpunkt eine Checkbox den Fokus hat, weil dann die Box die Tastenkombination erhält, und die kann nix damit anfangen. In dem Fall müsstest du vorher in eine beliebige Zelle klicken, oder du legst den Code gleich auf einen CommandButton, den du in das Blatt einfügst.
Gruß
Vielen lieben dank für deine Hilfe.
Ich probiere es einmal aus.Vielleicht geht das ja so.
Danke.
LG Tina
|