VisualBasic [Excel] Werte beim Laden der Datei einlesen

walkingtoaster

Lt. Junior Grade
🎅Rätsel-Elite ’24
Registriert
Mai 2006
Beiträge
411
Hi,

vorweg ich kenn mich mit Visualbasic nicht besonders gut aus, hab mich die letzten paar Tage etwa eingelesen weil ich Makros in Excel verwendet habe.

Ich habe ein Excel-Sheet mit mehreren Zeilen und Spalten die zeilenweise innerhalb des Makros zusammengerechnet werden. Mit Hilfe mehrere Checkboxen soll man auswählen können welche Spalten mit in die Rechnung aufgenommen werden sollen(Haken gesetzt in der CB) oder eben nicht und durch einen Button wird dann zusammengerechnet.
Es funktioniert soweit alles, allerdings besteht das Problem, dass die Werte der Checkboxen erst "feststehen" wenn man jede Box einmal angeklickt hat, quasi das Click-Event bedient hat.

Wenn man jetzt die Datei öffnet sind die Checkboxen ja bereits gesetzt aber die entsprechenden Werte sind noch nicht hinterlegt, meine Frage wäre wie man den Status der Checkboxen beim laden der Datei einlesen kann damit sofort die rictigen Werte hinterlegt sind

Mein Quelltext sieht so aus:
Code:
Public DE As Integer    'Globale Variable
Public BE As Integer    'Globale Variable
Public HW As Integer    'Globale Variable
Public IBS As Integer   'Globale Variable
Public KIBS As Integer  'Globale Variable
Public HIBS As Integer  'Globale Variable

Private Sub CheckBox1_Click()   'Checkboxwert für BE
BE = 1
If CheckBox1.Value = True Then
BE = 1
ElseIf CheckBox1.Value = False Then
BE = 0
End If
End Sub

Private Sub CheckBox2_Click()   'Checkboxwert für DE
DE = 1
If CheckBox2.Value = True Then
DE = 1
ElseIf CheckBox2.Value = False Then
DE = 0
End If
End Sub

Private Sub CheckBox3_Click()   'Checkboxwert für HW
HW = 1
If CheckBox3.Value = True Then
HW = 1
ElseIf CheckBox3.Value = False Then
HW = 0
End If
End Sub

Private Sub CheckBox4_Click()   'Checkboxwert für IBS
IBS = 1
If CheckBox4.Value = True Then
IBS = 1
ElseIf CheckBox4.Value = False Then
IBS = 0
End If
End Sub

Private Sub CheckBox5_Click()   'Checkboxwert für KIBS
KIBS = 1
If CheckBox5.Value = True Then
KIBS = 1
ElseIf CheckBox5.Value = False Then
KIBS = 0
End If
End Sub

Private Sub CheckBox6_Click()   'Checkboxwert für HIBS
HIBS = 1
If CheckBox6.Value = True Then
HIBS = 1
ElseIf CheckBox6.Value = False Then
HIBS = 0
End If
End Sub

Sub berechnen()     'Berechnung der Positionen nach Userauswahl mittels Variablen BE,DE etc.
Dim x As Integer
For x = 9 To 28
    Cells(x, 12) = BE * Cells(x, 2) + DE * Cells(x, 4) + HW * Cells(x, 7) + IBS * Cells(x, 9) + KIBS * Cells(x, 10) + HIBS * Cells(x, 11)
Next x
End Sub

Private Sub CommandButton1_Click()
Static n As Integer  'Statische Variable um den Wert bei weiteren Aufrufen bei zu behalten
Dim x As Integer   'Laufvariable der For-Schleife

If n = 0 Then  'Anweisung zur Wertezuweisung beim Dateiaufruf
    CheckBox6.Value = True
    CheckBox5.Value = True
    CheckBox3.Value = True
    CheckBox2.Value = True
    CheckBox1.Value = True
    CheckBox4.Value = True
    HIBS = 1
    KIBS = 1
    BE = 1
    DE = 1
    HW = 1
    IBS = 1

   ' For x = 9 To 28  'Berechnung der Gesammtkosten mit allen Punkten
   '     Cells(x, 12) = Cells(x, 2) + Cells(x, 4) + Cells(x, 7) + Cells(x, 9) + Cells(x, 10) + Cells(x, 11)
   ' Next x
End If

n = 1   'Damit die If-Bedingung nicht mehr aufgerufen wird

Call berechnen  'Eigentlicher Programm aufruf

End Sub
 
Na ganz einfach indem du
Code:
If CheckBox5.Value = True Then
KIBS = 1
ElseIf CheckBox5.Value = False Then
KIBS = 0
End If
nicht in jeden sub einzeln einfügst sondern das erst in den sub der das ganze auswertet.
Die onclick subs werden ja erst aufgerufen, wenn tatsächlich geklickt wurde.
 
Ach na klar^^

Ist mir gar nicht aufgefallen...den Wald vor lauter Bäumen nicht gesehen xD

Danke
 
Zurück
Oben