Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Buttons in einer Tabelle ansprechen und löschen

Buttons in einer Tabelle ansprechen und löschen
Tom
Hallo ihr Profis.
ICh habe ein Problem mit einem Makro von mir.
Ich möchte gern dass in dem Makro alle Buttons abgefragt werden und die die sich in der entsprechenden Spalte befinden gelöscht werden.
Ich habe das bisher so realisiert:
For Each ButtonShape In Sheet.Shapes
If ButtonShape.TopLeftCell.Column = IntCol Then ButtonShape.Delete
Next

Das ganze funktioniert auch manchmal.
Aber manchmal bekomme ich den Laufzeitfehler 1004.
Der Debugger markiert mir dann die If-Anweisung gelb. IntCol besitzt aber den richtigen Wert und in der Excel ist eigentlich auch der Button in dieser Spalte gelöscht. Nur macht er mein Makro nicht weiter. Und ich weiß nicht warum.
Das letzte mal habe ich eine eigentlich unrelevanten Zellwert in einer entsprechenden Spalte geändert und dann kam diese Fehlermeldung.
Vielleicht sieht ja schon jemand einen Fehler.
Ansonsten poste ich mein ganzes Makro nochmal.
zur Erklärung:
Dim ButtonShape As Shape
Dim Sheet As Worksheet
Dim IntCol As Integer

Ich hatte spontan die Idee dass Excel nach dem löschen noch nicht realisiert, dass Der Button schon gelöscht ist und dann natürlich das Problem hat dass man einen gelöschten button nicht nochmal löschen kann.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Buttons in einer Tabelle ansprechen und löschen
14.10.2010 06:51:24
fcs
Hallo Tom,
da das Makro ja manchmal funktioniert, wird im Code kein offensichtlicher Fehler sein, sondern es es gibt irgendeinen Zustand zum Zeitpunkt des Makrostarts, der den Fehler auslöst.
Baue erst einmal eine Fehlerroutine ein, die ggf. weiterhilft.
Gruß
Franz
Sub ButtonsLoeschen()
Dim ButtonShape As Shape
Dim Sheet As Worksheet
Dim IntCol As Integer
On Error GoTo Fehler
'Setzen von Testwerten
Set Sheet = Worksheets(1)
IntCol = 3
'Löschprozedur
For Each ButtonShape In Sheet.Shapes
If ButtonShape.TopLeftCell.Column = IntCol Then ButtonShape.Delete
Next
'Fehlerbehandlung am Ende der Prozedur
Fehler:
With Err
Select Case .Number
Case 0 'ales OK
Case 1004 '
If Not ButtonShape Is Nothing Then
With ButtonShape
MsgBox "Shape-Name: " & .Name & vbLf _
& "Tabellen: " & Sheet.Name & vbLf _
& "Sichtbar: " & IIf(.Visible, "ja", "nein"), _
vbInformation + vbOKOnly, "Fehler - Löschen Buttons"
End With
End If
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Buttons in einer Tabelle ansprechen und löschen
15.10.2010 15:17:00
Tom
Danke für den Tipp mit der Fehler überprüfung.
Ich bekomme nun die Aussage dass ein Dropdown mit bestimmter NR. der Fehler ist.
es ist unsichtbar.
Wenn ich dann auf OK drücke wird die richtige Spalte gelöscht nur kommt dann nicht mehr der kleine Pfeil neben den Dropdowns.
Aber das Zellen überprüfen wirkt noch.
Könnte ich den Fehler beheben wenn ich die DropDowns (über Daten überprüfen) durch ein Kombinationsfeld ersetzte?
Was würde mir ein Profi da empfehelen?
AW: Buttons in einer Tabelle ansprechen und löschen
15.10.2010 16:44:26
Tom
Ich hoffe man kann mir hier helfen.
Ich habe mittlerweile auch festgestellt dass eine Kombobox eher problematisch für meine Makros wäre da ich diese Zeilen in denen die sind auch per Makro dupliziere.
Und die Komboboxen zu duplizieren wäre wieder ein größerer Akt als die Dropdowns.
Anzeige
AW: Buttons in einer Tabelle ansprechen und löschen
16.10.2010 10:29:10
fcs
Hallo Tom,
ich hab noch mal ein wenig um das Phäomen des verschwundenen DropDowns der Datengültigkeitsprüfung geforscht.
Dieser ist ebenfalls ein Shape-Objekt und existiert einmal je Tabellenblatt nach dem eine Datengültigkeitsprüfung mit Drop-Downauswahl eingerichtet wurde. Wird es gelöscht, dann scheint es in die ewigen Jagdgründe des Micosoft-Nirwanas zu entschwinden. Ich hab jedenfalls keine Einstellung oder Option gefunden mit die DropDown-Auswahl wieder zum Leben erweckt wird.
Du solltest dein Makro so umstellen, das gezielt nur die Objekte gelöscht werden, die du löschen möchtest - hier wohl nur die Schaltflächen.
Gruß
Franz
Sub ButtonsLoeschen()
Dim ButtonShape As Shape
Dim Sheet As Worksheet
Dim IntCol As Integer
On Error GoTo Fehler
'Setzen von Testwerten
Set Sheet = Worksheets(1)
IntCol = 3
'Löschprozedur
For Each ButtonShape In Sheet.Shapes
Select Case ButtonShape.Type
Case 8 'Formularsteuerelemente
Select Case ButtonShape.FormControlType
Case 0 'xlButtonControl Formularschaltfläche
If ButtonShape.TopLeftCell.Column = IntCol Then ButtonShape.Delete
End Select
Case 12 'OLE-Steuerelementobjekt
Select Case ButtonShape.OLEFormat.progID
Case "Forms.CommandButton.1" 'Ole-Schaltfläche
If ButtonShape.TopLeftCell.Column = IntCol Then ButtonShape.Delete
End Select
End Select
Next
'Fehlerbehandlung am Ende der Prozedur
Fehler:
With Err
Select Case .Number
Case 0 'ales OK
Case 1004 '
If Not ButtonShape Is Nothing Then
With ButtonShape
MsgBox "Shape-Name: " & .Name & vbLf _
& "Tabellen: " & Sheet.Name & vbLf _
& "Sichtbar: " & IIf(.Visible, "ja", "nein"), _
vbInformation + vbOKOnly, "Fehler - Löschen Buttons"
End With
End If
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige