ich habe in Word Kontrollkästchen. Ich habe ein Vba Script, welches ausliest, wie viele dieser Kästchen ausgewählt wurden. Jetzt möchte ich aber, dass ein Kontrollkästchen einen bestimmten werden hat. Also anstatt 1 hochzuzählen, soll das eine Kontrollkästchen den Wert 10 erhalten (würde ergeben, dass das Ergebnis statt 30 Punkte 40 Punkte erhalten würde)
Kann mir jemand helfen, wie ich das machen kann?!
hier noch mein Code…
Sub Punkte_berechnen()
Dim oDoc As Document
Dim ffld As FormField
Dim iCount As Integer, iCountTotal As Integer
Set oDoc = ActiveDocument
For Each ffld In oDoc.FormFields
If ffld.Type = wdFieldFormCheckBox Then
iCountTotal = iCountTotal + 1
If ffld.Checkbox.Value = True Then
iCount = iCount + 1
End If
End If
Next ffld
MsgBox "Aktivierte Kontrollkästchen: " & iCount & „/“ & iCountTotal, vbInformation
ich habe in Word Kontrollkästchen. Ich habe ein Vba Script,
welches ausliest, wie viele dieser Kästchen ausgewählt wurden.
Jetzt möchte ich aber, dass ein Kontrollkästchen einen
bestimmten werden hat. Also anstatt 1 hochzuzählen, soll das
eine Kontrollkästchen den Wert 10 erhalten (würde ergeben,
dass das Ergebnis statt 30 Punkte 40 Punkte erhalten würde)
Sofern Du die ActiveX-Kontrollkästchen verwendet hast, könnte folgendes Beispiel hilfreich sein. Am Besten ist, Du öffnest eine neue Datei und probierst es dort erst einmal aus. Du benötigst dafür 10 ActiveX-CheckBoxen auf dem Dokument.
Klicke im VisualBasic-Editor im Menü „Einfügen“ auf „Modul“ und füge den nachfolgenden Code dort ein:
Public CheckBoxWerte(0 To 9) As Integer
Public CheckBoxSumme As Integer
Public Sub CheckBoxWerte\_Setzen()
CheckBoxWerte(0) = -1
CheckBoxWerte(1) = -2
CheckBoxWerte(2) = -3
CheckBoxWerte(3) = -4
CheckBoxWerte(4) = -5
CheckBoxWerte(5) = -6
CheckBoxWerte(6) = -7
CheckBoxWerte(7) = -8
CheckBoxWerte(8) = -9
CheckBoxWerte(9) = -10
End Sub
Public Sub CheckBoxSumme\_Berechnen()
CheckBoxSumme = \_
CheckBoxWerte(0) \* CInt(ThisDocument.CheckBox1.Value) + \_
CheckBoxWerte(1) \* CInt(ThisDocument.CheckBox2.Value) + \_
CheckBoxWerte(2) \* CInt(ThisDocument.CheckBox3.Value) + \_
CheckBoxWerte(3) \* CInt(ThisDocument.CheckBox4.Value) + \_
CheckBoxWerte(4) \* CInt(ThisDocument.CheckBox5.Value) + \_
CheckBoxWerte(5) \* CInt(ThisDocument.CheckBox6.Value) + \_
CheckBoxWerte(6) \* CInt(ThisDocument.CheckBox7.Value) + \_
CheckBoxWerte(7) \* CInt(ThisDocument.CheckBox8.Value) + \_
CheckBoxWerte(8) \* CInt(ThisDocument.CheckBox9.Value) + \_
CheckBoxWerte(9) \* CInt(ThisDocument.CheckBox10.Value)
MsgBox "Die Summe aller aktivierten Checkboxen beträgt " & CStr(CheckBoxSumme)
End Sub
Gehe danach bitte in das Codefenster von „ThisDocument“ und füge dort den nachfolgenden Code ein:
Private Sub CheckBox1\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox10\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox2\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox3\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox4\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox5\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox6\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox7\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox8\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub CheckBox9\_Click()
Call CheckBoxSumme\_Berechnen
End Sub
Private Sub Document\_Open()
Call CheckBoxWerte\_Setzen
End Sub
Klicke danach im Menü „Debuggen“ auf „Kompilieren …“.
Schließe dann bitte die Datei und öffne sie erneut.
Ich denke der Code ist relativ selbsterklärend. Nur eins vielleicht: Die Funktion CInt() wandelt die Boolschen Werte der CheckBox-Eigenschaft „Value“ in Zahlen um, wobei False in 0 und True in -1 umgewandelt wird. Daher sind in dem Array „CheckBoxWerte“ die Zahlen negativ.