Hey holger,
habe es nun eingebaut bzw. ersetzt und es funktioniert teilweise!
Dein Code ist sicherlich richtig, ich weiss nur nicht wie ich ihn einsetzten muss.
Soll ich zuerst alle " Sub Checkbox1_click()" nacheinander aufführen, und dann "Sub Checkbox_prüfen()" nur einmal am ende schreiben?
Wenn ich es so mache, dann bekomme ich immer die werte aus Checkbox_1, auch wenn ich zb. checkbox_3 anklicke!
Oder muss ich immer abwechslungsweise " Sub Checkbox1_click()", und dann das "Sub Checkbox_prüfen()" aufführen? dann erhalte ich natürlich kompilationsfehler weil die namen doppelt vorkommen.
ich vermute, das prüfen-sub arbeitet für alle chekcboxes. aber es bezieht sich immer auf "Data-sheet 1". musss ich noch irgendwelche anderen felder ausser "Data-sheet 1" anpassen??
liebe grüsse A
Holger schrieb am 24.06.2009 20:18:19:
Hallo mister-macro,
ungeprüft, aber versuche es mal:
Sub CheckBox1_Click()
Checkbox_prüfen Worksheets("Analysis").CheckBox1, 21
End Sub
Sub CheckBox2_Click()'ggf. Zahlen anopassen
Checkbox_prüfen Worksheets("Analysis").CheckBox2, 22
End Sub
'...
Sub Checkbox_prüfen(cb, n)
If cb = True Then 'data-sheet 1
b = Array(7, 10, 13, 15, 18, 19, 20, 21, 22, 65, 68, 72)
For i = 2 To 18
For j = 0 To 11
Worksheets("ZT").Cells(j * 77 + n, i) = Worksheets("data-sheet 1").Cells(b(j), i)
Next j
Next i
Else
For j = 0 To 11
Worksheets("ZT").Range("B" + CStr(j * 77 + n) + ":R" + CStr(j * 77 + n)) = 0
Next j
End If
End Sub
Gruß
Holger
mister-macro schrieb am 24.06.2009 12:04:01:
Hallo miteinander,
Ich schreibe an einem makro, das mir aus mehreren sheets daten zusammen zieht, und diese in einem "analysis-sheet" addiert.
Die daten welche zusammengeführt werden sollen, kann man im "analysis-sheet" durch kontrollkästchen auswählen.
nun habe ich ziemlich viele daten, und müsste für jedes kontrollkästchen einen riesigen code schreiben, der sich immer wiederholt für jedes kontrollkästchen, dabei ändern nur einzelne feste werte.
hier mein bisheriger code:
Sub CheckBox1_Click()
If Worksheets("Analysis").CheckBox1 = True Then 'data-sheet 1
For i = 2 To 18
Worksheets("ZT").Cells(21, i) = Worksheets("data-sheet 1").Cells(7, i)
Worksheets("ZT").Cells(98, i) = Worksheets("data-sheet 1").Cells(10, i)
Worksheets("ZT").Cells(175, i) = Worksheets("data-sheet 1").Cells(13, i)
Worksheets("ZT").Cells(252, i) = Worksheets("data-sheet 1").Cells(15, i)
Worksheets("ZT").Cells(329, i) = Worksheets("data-sheet 1").Cells(18, i)
Worksheets("ZT").Cells(406, i) = Worksheets("data-sheet 1").Cells(19, i)
Worksheets("ZT").Cells(483, i) = Worksheets("data-sheet 1").Cells(20, i)
Worksheets("ZT").Cells(560, i) = Worksheets("data-sheet 1").Cells(21, i)
Worksheets("ZT").Cells(637, i) = Worksheets("data-sheet 1").Cells(22, i)
Worksheets("ZT").Cells(714, i) = Worksheets("data-sheet 1").Cells(65, i)
Worksheets("ZT").Cells(791, i) = Worksheets("data-sheet 1").Cells(68, i)
Worksheets("ZT").Cells(868, i) = Worksheets("data-sheet 1").Cells(72, i)
Next
Else
Worksheets("ZT").Range("B21:R21") = 0
Worksheets("ZT").Range("B98:R98") = 0
Worksheets("ZT").Range("B175:R175") = 0
Worksheets("ZT").Range("B252:R252") = 0
Worksheets("ZT").Range("B329:R329") = 0
Worksheets("ZT").Range("B406:R406") = 0
Worksheets("ZT").Range("B483:R483") = 0
Worksheets("ZT").Range("B560:R560") = 0
Worksheets("ZT").Range("B637:R637") = 0
Worksheets("ZT").Range("B714:R714") = 0
Worksheets("ZT").Range("B791:R791") = 0
Worksheets("ZT").Range("B868:R868") = 0
End If
End Sub
Dieser code wiederholt sich nun für 100 weitere Kästchen.
Könnte man diesen nicht durch einen loop verkürzen, resp. vereinfachen, in dem man anstatt den zahlen "21, 98, 175, 252, 329..." so etwas wie "j = 21", "j = j+ 77"
dann müsste nur noch der ursprungswert (21) verändert werden und könnte beim Kontroll-kästchen 2 dann z.b 22 sein. die Werte "7, 10, 13, 15..." sind für jedes data-sheet die gleichen.
wäre sehr froh über ein feeback. bin ein frischling in makros...
freundliche Grüsse
Anias |