ich habe folgende Überlegung:
Es geht um den Lagerbestand von Teilen. Und ich möchte folgendes tun:
Ich habe eine Liste in Tabelle1, in die bei per VBA (Button-Klick in einem anderen Tabellenblatt) neue Zeilen eingefügt werden (copy-paste von einem anderen Tabellenblatt in die nächste freie Zeile). Die Spalten sind immer gleich (Artikelbeschreibungen usw).
Jedes Mal wenn eine neue Zeile eingefügt wird und eine bestimmte Bedingung erfüllt ist, soll dabei zusätzlich in der entsprechenden neuen Zeile in der Spalte "K" ein Button auf Zellgröße eingefügt werden.
Bis dahin funktioniert alles.
Wenn nun auf diesen Button geklickt wird, sollen die Daten der jeweiligen Zeile wieder gelöscht werden und der Button soll ebenfalls gelöscht werden.
Das klappt bisher nicht richtig...
Dabei versuche ich die zu löschende Zeile über den angeklickten Button zu ermitteln,
aber irgendetwas funktioniert da nicht. Wenn ich mir die ausgelesene Adresse per Message-Box anzeigen lassen, sehe ich, dass beim Löschen die Buttons nach Erstell-Reihenfolge und nicht nach Zeile gelöscht werden. Daher werden auch die Zeilen in ihrer Reihenfolge von oben nach unten gelöscht, egal auf welche Buttons ich klicke.
Was kann der Fehler sein? Hat es vielleicht etwas mit der Namensgebung der Buttons zu tun?!!
Bitte um Hilfe!
Anbei der Code zum Erstellen des Buttons
Sub ButtonErstellen()
Dim Zeilenvariable as Variant
Zeilenvariable = Tabelle3.Range("AB15").Value
'Prüfung ob Teile verfügbar sind
If Tabelle1.Range("AQ19") >= 0 Then
'Button einfügen zur weiteren Bearbeitung
Dim objButton As Object
Dim strObjekt As String
Dim cTop As Currency
Dim cLeft As Currency
Dim cHeight As Currency
Dim cWidth As Currency
Dim sheet As Worksheet
With Tabelle1.Range("K" & Zeilenvariable)
cTop = .Top
cLeft = .Left
cHeight = .Height
cWidth = .Width
End With
Set objButton = Tabelle1.Buttons.Add(cLeft, cTop, cWidth, cHeight)
objButton.OnAction = "LOS"
objButton.Caption = "Weiter"
objButton.Placement = xlMoveAndSize
objButton.Name = "btnLOS"
Else
End If
End Sub
Der Button soll schon bei Erstellung, das Makro zum Löschen zugewiesen bekommen, ich habe den Code in ein Modul geschrieben.Hier der Code, der von jedem neu erstellten Button genutzt werden soll
Sub LOS()
Dim a As Variant
Dim adresse As Variant
adresse = ActiveSheet.Buttons(Application.Caller).TopLeftCell.Address & vbLf
Dim wert() As String
Dim zeile As Variant
wert = Split(Range(adresse).Address, "$")
msgbox "Spalte: " & wert(1) & Chr(13) & "Zeile: " & wert(2)
zeile = wert(2)
'Button löschen
ActiveSheet.Buttons(Application.Caller).Delete
'Ganze Zeile löschen
Tabelle1.Range("b" & zeile & ": K" & zeile).Select
Selection.ClearContents
'Zelle wieder Ursprungsformat herstellen
Tabelle1.Range("J51").Select
Selection.Copy
Range("J" & zeile).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End Sub