Hallo liebe Leute,
bin kurz vor der Verzweiflung...
Ich habe eine Tabelle, welche ich per Knopfdruck jeweils um eine Zeile erweitern möchte.
Jede neue Zeile enthält 5 checkboxen, welche mit der darunter liegenden Zelle verlinkt sind.
Das löse ich so, dass einfach die checkboxen von oberhalb kopiert werden.
Die Tabelle soll mittles Autofilter filterbar sein, deshalb sind die checkboxen von Zellposition und -grösse abhängig.
Soweit so gut, das funktioniert mal halbwegs mit folgenden Einschränkungen:
1. Ich bin darauf angewiesen, dass niemand die Anzahl der Checkboxen verändert. Wenn einer selber eine Checkbox einfügt - auch wenn er sie nachher wieder löscht - funktioniert das Makro nicht mehr.
2. Es kam auch schon vor, dass beim Speichern der Datei im gefilterten Zustand die ausgeblendeten Checkboxen nicht mehr eingeblendet werden konnten (waren zwar noch da, aber nur noch zusammengedrückt).
Frage: gibt es eine Möglichkeit, die Nummer der zuletzt hinzugefügten Checkbox auszulesen, selbst wenn sie wieder gelöscht wurde? (=höchste Checkboxnummer)
Gibt es eine Möglichkeit, die Grösse der Checkbox sauber zu definieren?
Bin schon seit Tagen am probieren und hoffe, dass mich jemand erlösen kann. (Bin nicht grad der Hirsch in VBA...)
Ich habe hier mal meinen gebastelten Code...
Vielen lieben Dank bereits im Voraus.
Gruss, Werdi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | Sub Makro1()
Dim N As Integer
N = WorksheetFunction.Max(Columns(1))
Application.ScreenUpdating = False
Rows(N + 3). Select
Selection.Insert Shift:=xlDown
Range( "A" & N + 3). Select
ActiveCell.FormulaR1C1 = N + 1
ActiveSheet.Shapes.Range(Array( "Check Box " & (N * 5) - 4)). Select
Selection.Copy
Cells(3 + N, 15). Select
ActiveSheet.Paste
With Selection
.Value = xlOff
.LinkedCell = "O" & N + 3
.Display3DShading = True
End With
ActiveSheet.Shapes.Range(Array( "Check Box " & (N * 5) - 3)). Select
Selection.Copy
Cells(3 + N, 16). Select
ActiveSheet.Paste
With Selection
.Value = xlOff
.LinkedCell = "P" & N + 3
.Display3DShading = True
End With
ActiveSheet.Shapes.Range(Array( "Check Box " & (N * 5) - 2)). Select
Selection.Copy
Cells(3 + N, 17). Select
ActiveSheet.Paste
With Selection
.Value = xlOff
.LinkedCell = "Q" & N + 3
.Display3DShading = True
End With
ActiveSheet.Shapes.Range(Array( "Check Box " & (N * 5) - 1)). Select
Selection.Copy
Cells(3 + N, 18). Select
ActiveSheet.Paste
With Selection
.Value = xlOff
.LinkedCell = "R" & N + 3
.Display3DShading = True
End With
ActiveSheet.Shapes.Range(Array( "Check Box " & (N * 5))). Select
Selection.Copy
Cells(3 + N, 19). Select
ActiveSheet.Paste
With Selection
.Value = xlOff
.LinkedCell = "S" & N + 3
.Display3DShading = True
End With
Range( "B" & N + 3). Select
Application.ScreenUpdating = True
End Sub
|
|