Ich sitze seit gestern an einem Problem, das ich zwar teilweise lösen konnte, aber leider eben nur teilweise. Ich hoffe jemand von euch kann mir auf die richtige Fährte helfen. Folgendes Problem:
Der Anwender kann in einem Excelsheet per Button eine neue Zeile anlegen (so gelöst, weil dabei einige Formeln ergänzt/angepasst werden). Dabei soll auch eine List-Box hinzugefügt werden, in der der Anwender bestimmte Elemente markieren kann.
Das Anlegen der List-Box klappt:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=83.5, Top:=t.Top + 1, Width:=175, Height:=97.5).Select
Nun sollen aber noch drei Eigenschaften angepasst werden. Das Aufzeichnen funktioniert leider nicht, da bleibt das Makro leer. Ich habe herausgefunden, wie dies in einer Private Sub (in der Beispieldatei auch enthalten) geht:
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
ListBox1.ListFillRange = "Details!A350:A365"
(Die Range wird in der Praxis dann natürlich variabel sein und vom Makro an Hand anderer Kriterien bestimmt.)
Aber wenn ich diese Befehle direkt in die Sub übernehme, mit der ich die List-Box anlege kommt ein runtime error 424. Soweit ich weiß kann ich die Private Sub ja nicht aus dem normalen Makro heraus aufrufen. Von daher: Wer kann mir sagen, wie ich die Befehle direkt im Makro angeben muss bzw. was ich evtl. ergänzen muss, damit es geht?
PS1: Ein Datei mit der Situation ist angefügt. Ich habe sie massiv abgespeckt (ist normalerweise breiter, wesentlich länger und hat noch viel mehr Funktionen). Also bitte nicht wundern, wenn das Beispiel nicht besonders viel Sinn macht, ich will aber nicht mit der ganzen Komplexität ablenken, die ja ansonsten gut funktioniert.
PS2: Im Moment arbeite ich für den Test noch mit der festen Einstellung ListBox1 (der Name den Excel für die erste ListBox vergibt). Ich habe mich noch nicht darum gekümmert wie ich den Namen der ListBox bekomme, die gerade angelegt wurde. Wenn das zufällig jemand weiß bin ich auch hier für einen Hinweis dankbar.
LG, Rainer