Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1456to1460
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

Buttons zeilenabhängig erstellen u löschen

Buttons zeilenabhängig erstellen u löschen
17.11.2015 09:48:47
Joern
Hallo zusammen,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buttons zeilenabhängig erstellen u löschen
17.11.2015 10:20:31
EtoPHG
Hallo Joern,
Wieso willst du einen Button löschen und an einer anderen Stelle wieder einen neuen mit der gleichen Funktion einfügen?
Es wäre doch viel einfacher, den Button am Leben zu lassen und einfach an die neue Stelle zu verschieben!
Gruess Hansueli

AW: Buttons zeilenabhängig erstellen u löschen
17.11.2015 10:57:24
Joern
Hallo Hansueli,
die Datei besteht aus mehreren Tabellenblättern, die jeweils gleichbedeutend mit einer Funktion/Abteilung sind. In einem Tabellenblatt kann man die Eigenschaften eines Teiles auswählen und dann quasi per Button einen Bestellauftrag "abschicken" (hier gibt es nur einen, den "Bestellung"-Button), woraufhin die neue Bestellung im beschriebenen Tabellenblatt1 erscheint (Eine Art Lagerübersicht). Dort soll die Bestellmenge manuell mit dem Lagerbestand abgeglichen werden und wenn das passt, soll der Bestellauftrag per Bestätigungsklick (hier gibt es für jeden Bestellauftrag einen eigenen Button) weitergehen zur nächsten Abteilung (wieder ein weiteres Tabellenblatt) und eben aus der Lagerübersicht wieder verschwinden.
Es handelt sich also um viele verschiedene Tabellenblätter.
Ich hoffe ich konnte das einigermaßen verständlich erklären ?!
Schöne Grüße

Anzeige
AW: Buttons zeilenabhängig erstellen u löschen
17.11.2015 12:52:13
Joern
Hallo,
meine Anfrage hat sich gerade erledigt. Habe mittlerweile durch Trial & Error selber die Lösung gefunden:
In den Eigenschaften von den Buttons hab ich noch eine hochzählende Variable in den Objektnamen eingebaut, so dass sichergestellt ist, dass alle Buttons einen anderen Namen haben. Das scheint es gewesen zu sein, denn jetzt funktioniert es. Trotzdem danke an alle, die sich die Mühe gemacht haben, diesen Beitrag zu lesen und darüber nachzudenken!
Set objButton = Tabelle1.Buttons.Add(cLeft, cTop, cWidth, cHeight)
objButton.OnAction = "LOS"
objButton.Caption = "Weiter"
objButton.Placement = xlMoveAndSize
objButton.Name = "btnLOS" & alpha
Schöne Grüße
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige