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

Forumthread: Buttons "variabel" hinzufügen

Buttons "variabel" hinzufügen
07.12.2017 10:38:35
Nati
Hallo Leute,
ich habe eine Tabelle, in der bestimmte Zellen kopiert und eingefügt werden. Immer wenn diese Zellen eingefügt werden, sollen nebendran Buttons hinzugefügt werden. und zwar in Spalte V
Mein Ansatz:
Private Sub AddSubSupplier_Click()
Dim letzteZeile As Long
Dim NewButton As Object
With Tabelle1
'Letzte Zeile bestimmen und gibt an, nach wieviel Zellen die nächste Tabelle anfangen soll
letzteZeile = .Range("S1048576").End(xlUp).Row + 7
'Kopiert den Bereich der hier bestimmt wird
.Range("S5:V9").Copy
.Range("S" & letzteZeile).PasteSpecial
Application.CutCopyMode = False
'        Hier wird bestimmt der wievielte Sub Supplier eingefügt wird
'        muss noch richtig berechnet werden!
.Range("S" & letzteZeile) = "Sub-Supplier " & (letzteZeile - 2)
.Range("S" & letzteZeile).Select
End With
' HIER LIEGT DAS PROBLEM; PROGRAMM FÜGT BUTTONS EIN ABER NICHT NEBEN DIE EINGEFÜGTEN ZELLEN VON  _
_
OBEN, IST SOMIT NOCH NICHT DYNAMISCH
-->
Set NewButton = Tabelle1.Buttons.Add(150, 1, 40, 20)
NewButton.Caption = ""
NewButton.Height = 50
' BUTTONS SOLLEN IN SPALTE V EINGEFÜGT WERDEN;KLAPPT ABER SO NICHT ! :(
NewButton.Left = Range("V" & letzteZeile)
End Sub
Bin für jede Hilfe dankbar,
Gruß Nati
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buttons "variabel" hinzufügen
07.12.2017 11:14:04
Ralf
Hi Nati,
NewButton.Left = Range("V" & letzteZeile).Left
Wobei ich kein Freund der tausend Objekte bin. Du blähst Deine Mappe unnötig auf und wenn die Zeile gelöscht wird, bleibt der Button ja trotzdem bestehen. Oder hast Du das irgendwo geregelt?
Ich händle das immer so: Ein einziger Button. Beim Selection_Change Ereignis wird dessen Top _ Eigenschaft auf den Wert der aktiven Zelle gesetzt. In Deinem Fall , das

Set NewButton = blablabla...

rausschmeißen und im Selection_Change einfach nur ein

Button1.Top =  Target.Top
(oder wie Dein Button auch immer heißen mag) einfügen.
Noch eine kleine Fehlerbehandlung einbauen (falls Mehrfachauswahl erfolgt). Da genügt ein

On Error resume next
am Anfang und ein

err.clear
am Ende.
Anzeige
AW: Buttons "variabel" hinzufügen
07.12.2017 13:17:55
Mullit
Hallo,
...und bei 'VBA gut' wissen wir natürlich, daß die Add-Methode bereits einen Left-Param. enthält...;-)
Tabelle1.Buttons.Add(150, 1, 40, 20)

Gruß, Mullit
AW: Buttons "variabel" hinzufügen
08.12.2017 07:17:56
Nati
Hallo Ralf,
danke dir, die Buttons haben folgenden Sinn: ein User kann damit einen "Baum" kreieren, und zwar wenn er auf zwei Buttons klickt, führt eine darauffolgende Methode aus, dass diese Buttons durch einen Strich verbunden werden. Bei deinem Code: NewButton.Left = Range("V" & letzteZeile) wird der Button oben eingefügt (siehe Gelbe Markierung( statt ganz unten (jedes mal beim hinzufügen eines Sub Suppliers, der andere Button habe ich manuell eingefügt); vielleicht gibt es da aber eine einfachere Lösung.
Userbild
Ziel ist es jeden Sub Supplier mit einem Strich verbinden zu können.(Diesen Code habe ich auch bereits, der mit zwei Punkte berechnet und diese dann verbindet - die Koordinaten werden je nach Klick auf zwei Buttons generiert; läuft auch super:
Sub connection_zeichnen()
Dim nameGeklickteSchaltfläche As String
Dim nameVerknüfungSchaltfläche As String
'--> Hier stehen die Werte von den beiden geklickten Buttons
nameGeklickteSchaltfläche = Worksheets("Hilfstabelle").Range("B5").Value
nameVerknüfungSchaltfläche = Worksheets("Hilfstabelle").Range("C5").Value
Worksheets("Tabelle1").Shapes.AddConnector(msoConnectorStraight, 0, 0, 0, 0).Select
Selection.ShapeRange.ConnectorFormat.EndConnect Worksheets("Tabelle1").Shapes( _
nameGeklickteSchaltfläche) _
, 2
Selection.ShapeRange.ConnectorFormat.BeginConnect Worksheets("Tabelle1").Shapes( _
nameVerknüfungSchaltfläche), 4
Worksheets("Tabelle1").Shapes(nameGeklickteSchaltfläche).Visible = False
Worksheets("Tabelle1").Shapes(nameVerknüfungSchaltfläche).Visible = False
'lösche Inhalt
Worksheets("Hilfstabelle").Range("B4").Value = ""
Worksheets("Hilfstabelle").Range("B5").Value = ""
Worksheets("Hilfstabelle").Range("C4").Value = ""
Worksheets("Hilfstabelle").Range("C5").Value = ""
End Sub

Gruß, Nati
Anzeige
Statt Buttons besser BeforeDoubleklick-Event
07.12.2017 11:22:33
Daniel
Hi
wie Ralf schon schrieb:
solche automatisch hinzugegfügten Buttons sind immer problematisch.
Über das BeforeDouble-Klick-Event kannst du im Prinzip jede Zelle zum Button machen, welcher bei Doppelklick reagiert.
in der Variable TARGET ist die angelickte Zelle hinterlegt, so dass du weißt, welche Zelle angelickt wurde und entsprechend reagieren kannst.
Gruß Daniel
Anzeige
AW: Statt Buttons besser BeforeDoubleklick-Event
08.12.2017 07:25:50
Nati
Hallo Daniel,
danke dir. Das ist sehr interessant.
Momantan habe ich , je nach dem welche Buttons geklickt werden, die Position der Buttons in eine Tabelle geschrieben:
Userbild
anschließend können diese Buttons dann verbunden werden mit den Werten ( das klappt auch gut).
Sub connection_zeichnen()
Dim nameGeklickteSchaltfläche As String
Dim nameVerknüfungSchaltfläche As String
nameGeklickteSchaltfläche = Worksheets("Hilfstabelle").Range("B5").Value
nameVerknüfungSchaltfläche = Worksheets("Hilfstabelle").Range("C5").Value
Worksheets("Tabelle1").Shapes.AddConnector(msoConnectorStraight, 0, 0, 0, 0).Select
Selection.ShapeRange.ConnectorFormat.EndConnect Worksheets("Tabelle1").Shapes( _
nameGeklickteSchaltfläche) _
, 2
Selection.ShapeRange.ConnectorFormat.BeginConnect Worksheets("Tabelle1").Shapes( _
nameVerknüfungSchaltfläche), 4
Worksheets("Tabelle1").Shapes(nameGeklickteSchaltfläche).Visible = False
Worksheets("Tabelle1").Shapes(nameVerknüfungSchaltfläche).Visible = False
'lösche Inhalt
Worksheets("Hilfstabelle").Range("B4").Value = ""
Worksheets("Hilfstabelle").Range("B5").Value = ""
Worksheets("Hilfstabelle").Range("C4").Value = ""
Worksheets("Hilfstabelle").Range("C5").Value = ""
End Sub
was dann so aussieht:
Userbild
Ich habe aber allerdings bedenken, da viele Sub Supplier generiert werden, und auch viele Tiers - denke das führt evtl zu Fehlern :/.
Hättest du da evtl einen Vorschlag für eine einfachere Lösung ?
Gruß,
Nathalie
Anzeige
AW: Buttons "variabel" hinzufügen
07.12.2017 11:24:55
Martin
Hallo Nati,
leider komme ich mit deinem Code nicht so richtig klar. Aber ich kann dir zumindest einen Ansatz für das Positionieren der Buttons geben:
Private Sub AddSubSupplier_Click()
Dim letzteZeile As Long
Dim NewButton As Object
With Tabelle1
'Letzte Zeile bestimmen und gibt an, nach wieviel Zellen die nächste Tabelle anfangen soll
letzteZeile = .Range("S1048576").End(xlUp).Row + 7
'Kopiert den Bereich der hier bestimmt wird
.Range("S5:V9").Copy
.Range("S" & letzteZeile).PasteSpecial
Application.CutCopyMode = False
'        Hier wird bestimmt der wievielte Sub Supplier eingefügt wird
'        muss noch richtig berechnet werden!
.Range("S" & letzteZeile) = "Sub-Supplier " & (letzteZeile - 2)
.Range("S" & letzteZeile).Select
End With
' HIER LIEGT DAS PROBLEM; PROGRAMM FÜGT BUTTONS EIN ABER NICHT NEBEN DIE EINGEFÜGTEN ZELLEN VON  _
_
_
OBEN, IST SOMIT NOCH NICHT DYNAMISCH
Set NewButton = Tabelle1.Buttons.Add(1, 1, 40, 50) '40 = Breite, 50 = Höhe
NewButton.Caption = ""
NewButton.Left = Range("V" & letzteZeile).Left
NewButton.Top = Range("V" & letzteZeile).Top
End Sub
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige