Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code läuft nicht als Add-In, nur in VBA-Editor

Code läuft nicht als Add-In, nur in VBA-Editor
23.05.2015 15:52:15
Hans-Werner
Liebe VBA-Gemeinde,
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code läuft nicht als Add-In, nur in VBA-Editor
23.05.2015 16:57:50
mumpel
Hallo!
Du musst sauber auf die aktive Arbeitsmappe referenzieren. Das tust Du in Deinem Code aber nicht.
Gruß, René

AW: Code läuft nicht als Add-In, nur in VBA-Editor
23.05.2015 20:52:03
Hans-Werner
Hallo René,
an welcher Stelle auf aktive Mappe referenzieren? Die Spalten werden richtig gelöscht, nur die Shapes "wandern" nicht nach vorne. Was muss dann wo refenrenziert werden?
Das gesamte Makro läuft in der aktuellen Mappe ab.
Gruß
Hawe

AW: Code läuft nicht als Add-In, nur in VBA-Editor
23.05.2015 22:31:31
Hans-Werner
Hallo,
vieleicht eine klarere und kürzere Frageform:
In Spalten 41-45 (Spaltenbreite = 1) befinden sich Shapes (Linien) von Zeile 3 (!!) bis Zeile 137 (o.ä.). Wenn Spalten 11 bis 40 gelöscht werden, sollen Shapes nicht mehr in Spalte 41-45 stehen, sondern in Spalte 11-15 mit Spaltenbreite 1 !!! inkl. der Überschriften in Zeilen 1 bis 2.
Das geht auch so, wenn man den Programmcode im VBA-Editor ausführt, aber nicht, wenn Code über Makro ausgeführt wird. Dann bleiben nämlich die Shapes in Spalten 41 bis 45, die Überschriften (Zellen 1,41 bis 2,45) werden vorgezogen auf Spalte 11 bis 15 und die Shapes liegen jetzt in Spalten 41 bis 45 mit Standardspaltenbreite. Und nun?
Gruß
HaWe

Anzeige
AW: Code läuft nicht als Add-In, nur in VBA-Editor
24.05.2015 09:23:21
Nepumuk
Hallo,
wie startest du die Löschroutine, per CommandButton in der Tabelle?
Gruß
Nepumuk

AW: Code läuft nicht als Add-In, nur in VBA-Editor
24.05.2015 11:28:37
Hans-Werner
Hallo Nepumuk,
das Löschen steht in der Gesamt-Sub
Sub A_Start()
Set rng = ActiveSheet.Range("A1").Find("PVI_ABUCH")
Call ....
'Zusatzspalten löschen:
Range(Columns(lspalte - 1 - Range("D1").Value), Columns(rspalte_z + 1)).Delete
'Erste Zeile löschen
Rows("1").Delete Shift:=xlUp
Set rng = Nothing
Application.ScreenUpdating = True
End Sub
... in Zeile 271 (von 280 Zeilen Programm-Code), gefolgt von Löschbefehl für erste Zeile.
Die

Sub A_Start wird einmal aus dem VBA-Editor aufgerufen (sie enthält viele Call-Aufrufe),
wo alles funktioniert und ein anderes Mal aus einem AddIn bzw. über eine Makro-Schaltfläche in  _
der Schnellstartleiste von Excel. Diese Aufrufe scheitern mit dem "Verschieben" der Shapes.
Danke für weitere Ideen und Hilfe.
Gruß
Hans-Werner

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige