- 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:
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