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

Doppelt eigefügte Schaltfläche

Doppelt eigefügte Schaltfläche
18.07.2018 10:30:32
Tobias
Hallo Liebe Foren-Mitglieder,
nachdem mein erstes Analyse-Tool mit VBA mittlerweile an sich gut läuft, habe ich versucht Schaltflächen einzufügen.
Das funktioniert an sich auch, allerdings kommen wir nun zu meinem Problem:
Wenn ich die Analyse zwei mal für die selbe Auswahl laufen lasse (wieso auch immer der User das sptäer machen sollte, aber ich will die Eventualität trotzdem beachtet haben), fügt folgender Code

Public Sub Buttons()
Dim i As Integer
Dim NewButton As Object
i = Worksheets("Steuerung").Range("D4").Value
Set NewButton = Worksheets("Sheet " & i).Buttons.Add(500, 15, 200, 50)
' Sheet i ist eine normale Tabelle
NewButton.Caption = "zurück zur Steuerung"
NewButton.Font.Bold = True
NewButton.OnAction = "Zur_Steuerung.ZurSteuerung"
Set NewButton = Worksheets("Blatt " & i).Buttons.Add(500, 15, 200, 50)
'Blatt i ist eine Pivot-Tabelle
NewButton.Caption = "zurück zur Steuerung"
NewButton.Font.Bold = True
NewButton.OnAction = "Zur_Steuerung.ZurSteuerung"
End Sub


auf dem normalen Tabellenblatt den Button genauso ein (Größe, Ort, Anzahl), wie er soll, während auf dem Blatt mit der Pivottabelle mit jedem weiteren Durchlauf ein zusätzlicher Button an versetzter Stelle eingefügt wird. (Also beim dritten Durchlauf habe ich drei identische Buttons, beim vierten vier, usw.)
Ich habe auch schon versucht den Aufruf des Moduls Buttons an anderer Stelle im Programm einzusetzen, um etwaige Doppelaufrufe zu vermeiden. Auch habe ich die beiden Buttons schon über getrennte Codes an zwei Stellen getrennt voneinander aufzurufen, alles mit dem gleichen Ergebnis.
Könnt Ihr mir bei meinem Problem weiterhelfen? Habt ihr das schon mal erlebt?
Ich freue mich auf eure Antworten.
Viele Grüße,
Tobias

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelt eigefügte Schaltfläche
18.07.2018 11:28:01
Daniel
Hi
Da müsstest du irgendwie prüfen, ob der andere Button schon vorhanden ist.
Wenn der Code im verknüpften Makro einfach nur ein Rücksprung ist, könntest du statt dem Button auch einfach nur einen Hyperlink auf das andere Blatt einfügen und die Zelle so formatieren, dass sie wie ein Button aussieht.
Der Hyperlink wird dann bei Mehrfachausführung überschrieben.
Gruß Daniel
AW: Doppelt eigefügte Schaltfläche
18.07.2018 12:00:46
fcs
Hallo Tobias,
warum Excel die Schaltflächen an unterschiedlichen Postionen einfügt.?
Du kann das Problem aber umgehen, wenn du den Schaltflächen zusätzlich eindeutige Namen zuweist - auf einem Blatt darf der Name nicht mehrfach vergeben werden.
Dein Makro für die Button-Erstellung ergänzt du um eine Prüfung, ob ein Shape mit diesem namen schon existiert. So werden beim 2. und weiteren Durchläufen keinne Schaltflächen mehr eingefügt.
Gruß
Franz
Public Sub Buttons()
Dim i As Integer
Dim NewButton As Object
i = Worksheets("Steuerung").Range("D4").Value
If fncCheckShape(Worksheets("Sheet " & i), "cmbZurueck") = False Then
Set NewButton = Worksheets("Sheet " & i).Buttons.Add(500, 15, 200, 50)
' Sheet i ist eine normale Tabelle
NewButton.Name = "cmbZurueck"
NewButton.Caption = "zurück zur Steuerung"
NewButton.Font.Bold = True
NewButton.OnAction = "Zur_Steuerung.ZurSteuerung"
End If
If fncCheckShape(Worksheets("Blatt " & i), "cmbZurueck") = False Then
Set NewButton = Worksheets("Blatt " & i).Buttons.Add(500, 15, 200, 50)
'Blatt i ist eine Pivot-Tabelle
NewButton.Name = "cmbZurueck"
NewButton.Caption = "zurück zur Steuerung"
NewButton.Font.Bold = True
NewButton.OnAction = "Zur_Steuerung.ZurSteuerung"
End If
End Sub
Public Function fncCheckShape(wks As Worksheet, strName As String) As Boolean
'Prüft ob Shape mit dem Namen im Tabellenblatt vorhanden
Dim objShape As Shape
On Error GoTo fehler
fncCheckShape = False
Set objShape = wks.Shapes(strName)
fncCheckShape = True
fehler:
End Function

Anzeige
AW: Doppelt eigefügte Schaltfläche
18.07.2018 13:09:27
Tobias
Hallo ihr beiden,
Vielen Dank schonmal für eure Hilfe, da habt ihr mir schon ganz gut geholfen (Besonders du, Franz). :)
Um auf deine Frage mit den verschiedenen Positionen einzugehen, Franz:
Ich habe nicht Hauch einer Ahnung, wieso es mir den Button schrittweise mit jedem Durchlauf nach links verschiebt (Dank dir, aber wenigstens mittlerweile nur noch einen einzelnen Button ^^). Die Größe und Position der Schaltfläche sind an sich ja eindeutig in
[Set NewButton = Worksheets("Blatt " & i).Buttons.Add(500, 15, 200, 50)]
festgelegt. Sehr seltsam das Ganze.
Später werde ich noch auf einem anderen Rechner arbeiten, vielleicht ist auch bei dem, auf dem ich gerade unterwegs bin, irgendwas im Argen.
Wenn sich das Problem damit gelöst hat, schreibe ich das natürlich hier rein.
Viele Grüße,
Tobias
Anzeige
AW: Doppelt eigefügte Schaltfläche
18.07.2018 13:56:08
Tobias
Mittlerweile habe ich eine Lösung gefunden, die zumindest Anwenderseitig das bringt, was ich vorhatte:
Mit jedem Durchlaufen der Public Sub Buttons() lasse ich nach der Wertzuweisung an die Variable i die in den Blättern schon bestehenden (und zu diesem Zeitpunkt verschobenen) Buttons mittels
Worksheets("Sheet " & i).Buttons.Delete
Worksheets("Blatt " & i).Buttons.Delete
löschen.
Beim erneuten Einfügen wird der Button an der zugewiesenen Position (500,15,...) neu eingefügt. (Beim ersten Mal funktioniert die lokale Anordnung schließlich.)
Aber trotzdem vielen, vielen Dank für eure Hilfe.
Viele Grüße,
Tobias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige