help me! :)
1. Zustand:
Durch das Bestätigen eines Formulars, wird in der Exceltabelle, in Spalte 7, ein Button generiert.
Bei jedem weiteren Ausführen wird in der Tabelle je eine neue Zeile beschrieben, wo auch in Spalte 7 wieder der gleiche Button erzeugt wird.
Code:
Dim myBtn As Object
Dim intLetzteVolleZeile As Long
intLetzteVolleZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set myBtn = ActiveSheet.Buttons.Add(Cells(intLetzteVolleZeile, 7).Left, Cells( _
intLetzteVolleZeile, 7).Top, Cells(intLetzteVolleZeile, 7).Width, Cells(intLetzteVolleZeile, 7). _
Height)
With myBtn
.Name = "G" & intLetzteVolleZeile
.Caption = "Auslagern"
.OnAction = "FormularAuslagernAufruf"
End With
Cells(intLetzteVolleZeile, 7) = myBtn.Name
Somit stehen irgendwann beliebig viele Zeilen in der Tabelle und in Spalte 7 genauso viele Buttons untereinander.
Zusätzlich wird für eine spätere Zuordnung/Verarbeitung in die Zelle, auf welcher der Button platziert wird, der Name des Buttons im Zelleninhalt vermerkt.
2. Zustand:
Später soll ein Klick auf eines dieser Buttons einige Aktionen starten und zwar innerhalb der Zelle, in der sich der gerade angeklickte Button befindet.
Zusätzlich soll der Button nach der Aktion spurlos gelöscht werden!
Hierzu wird mittels einer For-Next-Schleife und einer If-Verzweigung geprüft, ob der gerade angeklickte Button den gleichen Namen besitzt, wie der Inhalt der hinter ihm verdeckt liegenden Zelle.
Wenn das der Fall ist, dann soll die Löschung des Buttons erfolgen.
Code:
Dim i As Integer
For i = 2 To 20
Dim myBtn As Object
Set myBtn = ActiveSheet.Shapes(Application.Caller)
Cells(i, 7).Select
If Selection.Value = " " Then Exit For
' Vorübergehende Nachrichtenbox-Anzeige zur Nachverfolgung
' MsgBox myBtn.Name
' If Selection.Value = " " Then Exit For
If myBtn.Name = Cells(i, 7).Value Then myBtn.Delete
Next i
3. Problem
Das Script läuft so durch wie geplant und löscht den richtigen Button. Allerdings kommt ein Laufzeitfehler (siehe Screenshot), dass das Objekt zum Löschen nicht gefunden werden konnte. Hä? Wieso passiert das und wie könnte man das beheben/umgehen?
Für jede hilfreiche Antwort bin ich sehr dankbar!
Viele Grüße
Krasnaplesenij