ich halte nicht viel davon, solche Objekte mit neuen Namen zu versehen. Wenn du die Standardnamen wie CheckBox1 usw. stehen lässt, kann man auf die Nummer referenzieren, 1 = Januar usw. Für einen konkreteren Vorschlag müsste man etwas mehr über deine Datei wissen.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
Es ist allerdings so, dass ich die Variable weiter im Script nutzen möchte. Hier mein Script - bislang ohne die Variable - für "Januar", aus dem hervorgehen soll, weshalb:
If cname.Value = True Then With Sheets("Übersicht") .Cells(2, letztespalte + 1).Formula = "cname " .Cells(4, letztespalte + 1).FormulaR1C1 = "=" & cname & "!R[1]C[9]"
lngLastRow = .Cells(Rows.Count, letztespalte + 1).End(xlDown).Row .Range(.Cells(4, letztespalte + 1).Address, .Cells(lngLastRow, letztespalte + 1).Address).FillDown End With
Else
Dim Such Do Set Such = Worksheets("Übersicht").UsedRange.Find("cname") If Not Such Is Nothing Then Such.EntireColumn.Delete Loop Until Such Is Nothing End If
End Sub
So müßte ich nur hingehen und meine Checkboxen "Januar", "Februar", etc. nennen und kann das Script gleich lassen.
27.07.2018, 13:29 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2018, 13:29 von Kuwer.)
(27.07.2018, 12:51)jules schrieb: So müßte ich nur hingehen und meine Checkboxen "Januar", "Februar", etc. nennen und kann das Script gleich lassen.
Wenn das Makro Private Sub Januar_Click() heißt, gehe ich davon aus, dass es sich um ein ActiveX-Objekt handelt. Dann bräuchtest Du sowieso insgesamt 12 Makros für alle Monate.
das ist richtig. Es handelt sich um ein ActiveX-Objekt. Ich bräuchte zwar 12 Activex-Objekte (Checkboxen), könnte aber in jeder den selben Code verwenden, da er den Namen ja aus dem Checkbox nimmt - ...wenn er ihn denn mal nehmen würde :)
Gerne lasse ich mich aber auch von einer Alternative überzeugen?
es ist kein Problem, den Name einer CheckBox zu setzen und wieder auszulesen.
Der Ansatz, ein Script für 12 ChkBx ist gut, aber die Details müssen sehr genau aufeinander abgestimmt werden. Z.B. vergibt xl fortlaufenden Namen, d.h. jede Änderung muss sehr sorgfältig geplant sein.
Ist es möglich eine Beispieldatei zu zeigen, mit den 12 ChkBx und den Commandbuttons? Gibt es weitere Shapes auf diesem Sheet?
ein Beispiel habe ich leider nicht, da die Chechboxen + Script teil einer größeren Mappe sind. Ich habe jedoch mein Script für Januar etwas weiter oben geposted. Es gibt noch 3 weitere CommandButtons auf dem Sheet. Und dann eben die 12 Checkboxen, welche eben ausgelesen werden sollen.
Wie würdest du hingehen und besagte Checkboxen auslesen?
es bringt nichts, wenn du versuchst eine Lösung auf der Basis dessen, was du bereits hast zu erzwingen, indem du uns weitere Informationen vorenthältst. Wenn man das ganze Umfeld kennt, kann man auch über andere Lösungen nachdenken. 12 mal das gleiche Makro ist sicher kein guter Ansatz.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
27.07.2018, 14:25 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2018, 14:27 von jules.)
Hi,
ich habe euch meine Datei mal hochgeladen. Vielleicht erkennt ihr dann eher was ich vorhabe und wir finden eine Lösung. Aktuell sind - zum Testen - nur 2 Checkboxen (Januar + Februar). Insg. werden es wie bereits gesagt 12.
Zusätzlich gilt es zu beachten, dass die Variable "cname" aktuell aus einer Zelle gelesen wird und sowohl für Januar, als auch für Februar gleich ist. ( cname = Tabelle1.Range("Monat").Value ) - dies ist natürlich nicht richtig
Sub Makro1() Dim Ole As OLEObject For i = 1 To 12 With Cells(i, 1) ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=33.75, Height _ :=21.75).Select End With Next i End Sub Sub Rename() Dim Ole As OLEObject
For Each Ole In ActiveSheet.OLEObjects '########### Fehler ######### Ole.ShapeRange.TextFrame2.DeleteText '############################## i = i + 1 MM = Application.GetCustomListContents(8)(i) Ole.Name = MM Debug.Print Ole.Name Next Ole End Sub