Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1180to1184
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

Problem mit einem Makro

Problem mit einem Makro
Tom
Ich habe ein problem mit einem von mir programmiertem Makro.
Es soll immer aus einer Zelle einen Wert auslesen und anhand diesem entweder einen bestimmten Spaltenblock kopieren oder eben löschen bis der entsprechende Wert mit der Anzahl der Blöcke übereinstimmt.
Das Ganze funktioniert auch soweit. Nur hab ich das Problem dass in diesem Spaltenblock auch Buttons vorhanden sind die ein anderes Makro aufrufen. Diese Buttons sollen beim löschen der Spalten dann auch gelöscht werden. Doch da ist irgentwie der Haken. Manchmal funktioniert das eben und manchmal (ich weiß leider nicht wann oder warum) kommt eben der 'Laufzeitfehler 1004' - Anwendungs- oder Objektorientierter Fehler
Also hier mal mein Makro mit Dokumentation
Sub Stationen_anpassen()
Dim IntRow As Integer
Dim IntCol As Integer
Dim i As Integer
Dim x As Integer
Dim y As Integer
Dim F As Integer
Dim IntButtonPos As Integer
Dim ButtonShape As Shape
Dim Sheet As Worksheet
Set Sheet = ActiveWorkbook.Worksheets("Daten für Abschätzung")
IntRow = 1
Application.Calculation = xlManual
Application.ScreenUpdating = False
'suchen von "Anzahl der Stationen"
Do Until Cells(IntRow, 1).Value = "Anzahl der Stationen"
IntRow = IntRow + 1
Loop
IntButtonPos = 1
Do Until Cells(IntButtonPos, 1).Value = "Details"                       'Zeile der Details  _
suchen
IntButtonPos = IntButtonPos + 1
Loop
Do Until Cells(IntButtonPos, 1).Interior.ColorIndex = xlNone            'Zeile des Buttons  _
suchen
IntButtonPos = IntButtonPos + 1
Loop
If Cells(IntRow, 2).Value  "" Then                                    'Überprüfen ob Wert in  _
Anzahl der Stationen steht
x = Cells(IntRow, 2).Value                                          'Anzahl der Stationen  _
an X übergeben
IntCol = 7                                                          'Startspalte der Suche  _
festlegen
Do Until Cells(IntRow, IntCol).Value = "Stations-Bezeichnung"       'Zeile der  _
Stationsbezeichnungen suchen
IntRow = IntRow + 1
Loop
y = 1                                                               'Anzahl der vorhandenen  _
Stationen auf 1 setzen
Do While Cells(IntRow, IntCol + 5).Value = "Stations-Bezeichnung"   'Überprüfen ob eine  _
weitere Station vorhanden ist
IntCol = IntCol + 5                                             'Spalte anpassen
y = y + 1                                                       'Anzahl der vorhanden  _
Stationen um 1 erhöhen
Loop
If x > y Then                                                       'Überprüfen ob weniger  _
Stationen vorhanden sind als es benötigt
For i = 1 To x - y                                              'Falls ja, so viele  _
Spalten anfügen wir fehlen
Range(Columns(IntCol), Columns(IntCol + 4)).Copy Columns(IntCol + 5)
IntCol = IntCol + 5
Next i
ElseIf x 
Der Debugger zeigt mir diese Zeile
ButtonShape.TopLeftCell.Row = IntCol Then ButtonShape.Delete

Leider weiß ich nicht mehr weiter. Ich sitz nun schon mehrere Arbeitstage an diesem Problem und find nicht die Ursache des Fehlers noch kann ich ihn beheben.
Ich hoffe hier kann jemand helfen

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Problem mit einem Makro
06.10.2010 11:45:30
Dirk
Hallo Tom,
zum besseren Verstaendnis des Fehler kannst Du ja mal ein Debug.print ButtonShape.TopLeftCell.Column for dem Kommando If ButtonShape.TopLeftCell.Column = IntCol einfuegen und schauen, welcher Wert dort steht.
Vieleicht kannst Du ja mal probieren, ob Du das Object anders loeschen kannst z.B. sheet.shapes(Buttonshape.name).delete
Die Zeile ButtonShape.TopLeftCell.Row = IntCol Then ButtonShape.Delete kann ich in Deinem Makro nicht finden.
Gruss
Dirk aus Dubai
AW: Problem mit einem Makro
06.10.2010 11:51:38
Tom
dAS mit dem Namen des Buttons ist eine gute Idee. nur weiß ich eben nur den Namen des Buttons nicht weil der eben einfach nur Kopiert wird und auch nicht gesondert betitelt wird.
Vielleicht könnte man ja auch den Namen des Buttons auslesen der halt in der bestimmten Spalte ist. Ich weiß jedoch nicht wie das funktioniert.
Zu dem ist die betreffende Zeile die 13. von unten im Makro.
Das mit dem Debug-print teste ich mal und poste mein ergebnis.
Dankschonmal soweit für deine Hilfe
Anzeige
AW: Problem mit einem Makro
06.10.2010 12:18:31
Dirk
Hallo!
Ist immer nur ein Button in der Spalte oder hast Du in den Nachbarspalten, welche auch geloescht werden ebenfalls Buttons?
Gruss
Dirk aus Dubai
AW: Problem mit einem Makro
06.10.2010 13:10:50
Tom
also es gibt da immer einen Block von 5 Spalten die eine Station ergeben. Und je nach der Anzahl der Stationen gibt es eben auch diese 5 Spalten hintereinander. Aber in der ersten der 5 Spalten ist immer nur der eine Button drinen der dort eben gelöscht werden soll (in der Zeile die mir der Debugger ausgibt). Der nächste Button ist dann eben 5 spalten daneben.
AW: Problem mit einem Makro
06.10.2010 13:30:44
Dirk
Hallo!
Ich habe das mal bei mir ausprobiert und es funktioniert ohne Probleme.
Noch was: Auch wenn Du die Buttons kopierst bekommen diese intern einen Namen. Diesen kannst Du mit Buttonshape.name auch anzeigen und ggf. ueber diesen weg den Button loeschen
Sheet.shapes(Buttonshape.name).delete
Gruss
Dirk aus Dubai
Anzeige
AW: Problem mit einem Makro
06.10.2010 15:39:11
Tom
Das ist ja eben das verwirrende.
Ich benutz das Makro und es funktioniert einfahc wunderbar.
Dann teste ich die Tabelle indem ich einige Zellwerte ändere und dieser Fehler taucht wieder auf.
Vielleicht kann mir jemand sagen was der Laufzeitfehler 1004 Anwendungs- oder Objektdefinierter Fehler bedeutet.
Auch wenn ich den Teil der die Buttonslöscht so einbaue

For Each ButtonShape In Sheet.Shapes
If ButtonShape.TopLeftCell.Column = IntCol Then ButtonShape(ButtonShape.Name).Delete
Next

Und auch das mit Debug.Print funktioniert nicht.
Wenn ich das davor einbaue kommt die selbe Fehlermeldung wie zuvor.
Anzeige
AW: Problem mit einem Makro
07.10.2010 13:53:09
Tom
also es funktioniert einfach nicht.
Der Debug Print funktioniert nicht.
Wenn ich die Excel aber speicher und neu öffne passiert der Fehler nicht mehr.
In ActiveSheet.Shapes
07.10.2010 17:29:21
F1
oT
AW: In ActiveSheet.Shapes
08.10.2010 09:43:31
Tom
Wenn ich aber
For Each ButtonShape In ActiveWorksheet.Shapes
verwende kommt ein Fehler schon in dieser Zeile.
Und zwar meint excel: Objekt erforderlich!
AW: In ActiveSheet.Shapes
08.10.2010 09:44:09
Tom
also geht es immernoch nicht!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige