Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
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 "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

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
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige