Code läuft nicht als Add-In, nur in VBA-Editor
23.05.2015 15:52:15
Hans-Werner
habe wieder mal ein VBA-Problem mit Programm-Code, der im VBA-Editor einwandfrei läuft, aber nicht ganz so, wenn Code als Add-In oder Makro aufgerufen wird:
In meiner Excel-Tabelle sollen aus dem Inhalt der Spalten 1-20 (variabel, auch 1-15) über Auswertung diverser Zwischenspalten (z.B. Spalten 15-35) in den letzten nicht belegten Spalten als Shape-Objekte Linien erzeugt werden mit dem Befehl:
Set shpShape = myDoc.Shapes.AddLine _
(Cells(azeile, aspalte).Left, _
Cells(azeile,aspalte).Top, _
Cells(azeile+deltaz,aspalte+deltasp).Left, _
Cells(azeile+deltaz,aspalte+deltasp).Top)
Die Erzeugung dieser Shapes (einige hundert, da über 120 Zeilen mit je einem Shape und das in 3 Spalten) und Textfelder (ebenfalls fast 100) funktioniert bestens.
Wenn aber die Hilfsspalten (Zwischenspalten 15-35 o.ä.) gelöscht werden sollen, dann funktioniert das Löschen nur über den Programmaufruf im VBA-Editor einwandfrei. Wird aber der Code über ein AddIn oder Schaltfläche für das Makro aufgerufen, dann bleiben die Shapes an der alten Position und werden nicht nach vorne verschoben.
Der Löschbefehl für die Zwischenspalten lautet:
Range(Columns(lspalte - 1 - Range("D1").Value), Columns(rspalte_z + 1)).Delete
Die Spaltenbereiche müssen so berechnet werden.
Wie kann ich es erreichen, dass durch diesen Löschbefehl die hunderten von Shapes und Textfelder mit ihren Spaltenbreiten und anderen Formatierungen nach vorne verschoben werden, wenn das Makro oder Add-In aufgerufen wird?
Evtl. eine Excel-Pause zur Berechnung der neuen Positionen einbauen? - Wie?
P.S.: Jedes Shape/Textfeld hat als Eigenschaft "Von Zellposition und -größe abhängig".
Schon mal jetzt vielen Dank für Eure Hilfe.
Gruß
HaWe