Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CommandButton mit VBA-Code zuweisen

CommandButton mit VBA-Code zuweisen
30.10.2015 19:22:36
Hermann
Hallo zusammen,
das ersteTabellenblatt in meiner Exceltabelle (mit ca. 100 Tabellenbl.) ist ein Inhaltsverzeichnis mit Hyperlinks zum Aufrufen der einzelnen TabBlätter.
Das TabBlatt „Inhaltsverzeichnis“ wird durch einen VBA-Code erstellt. Kommt ein neues TabBlatt hinzu, rufe ich mit Alt + F8, Makro auswählen, ausführen den Code auf.
Das TabBlatt „Inhaltsverzeichis“ wird gelöscht und wieder neu, mit den akt. TabBlättern erstellt. Ferner wird mir durch den Code ein CommandButton erstellt. Funktioniert super!
Jetzt kommts:
Ich möchte den Code nicht mit Alt + F8 aufrufen, sondern durch das ClickEreignis auf den Button. Dies gelingt mir nicht!!
Wenn ich mit der rechten Maustaste direkt auf den Button klicke und das Makro zuweise, ist es nach 1 mal klicken auf den Button wieder weg, weil das ganze Sheet gelöscht und wieder neu erstellt wird. Hoffentlich benötige ich hierzu kein Klassenmodul.
Vielleicht könnt Ihr mir helfen.
Gruß, Hermann
VBA Teil:
With ActiveSheet.OLEObjects("CommandButton1").Object
.Caption = "Aktualisieren"
.BackColor = Val("&H" & "66FFFF") 'RGB(255,192,0)
.OnAction = "Inhaltsverzeichnis_erstellen"
End With

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButton mit VBA-Code zuweisen
30.10.2015 21:08:28
Nepumuk
Hallo,
warum nicht einfach eine Schaltfläche aus den Formularsteuelementen?
Gruß
Nepumuk

AW: CommandButton mit VBA-Code zuweisen
30.10.2015 22:23:31
Hermann
Hallo Nepumuk,
ich dachte das wäre eine Schaltfläche aus den Formularsteuelementen?
Wie müßte ich den Code abändern, das es ein Formularsteuelement wird?
Ich habe mir auch Deine Tipps mit mit dem Klassenmodul durchgelesen.
Frage: Kann ich in das Modul 1 mit
Option Explicit
Option Private Module
Private objCommandButton() As clsCommanbutton
auch den Code packen, der mir mein Inhaltsverzeichnis erstellt ( Normale Sub() )
Gruß, Hermann

Anzeige
AW: CommandButton mit VBA-Code zuweisen
30.10.2015 22:23:57
Hermann
Hallo Nepumuk,
ich dachte das wäre eine Schaltfläche aus den Formularsteuelementen?
Wie müßte ich den Code abändern, das es ein Formularsteuelement wird?
Ich habe mir auch Deine Tipps mit mit dem Klassenmodul durchgelesen.
Frage: Kann ich in das Modul 1 mit
Option Explicit
Option Private Module
Private objCommandButton() As clsCommanbutton
auch den Code packen, der mir mein Inhaltsverzeichnis erstellt ( Normale Sub() )
Gruß, Hermann

Anzeige
AW: CommandButton mit VBA-Code zuweisen
31.10.2015 01:09:10
fcs
Hallo Hermann,
wenn du eine farbige Schaltfläche möchtest, dann muss du ein Rechteck oder eine andere Form als Basis nehen. Die Schaltflächen aus den Formular-Steuerelementen lassen sich nicht färben.
Ob man das Ganze mit Active-X-Schaltfläche und Klassen-Modul gebacken bekommt: ?
Active-X-Elemente in einem Tabellenblatt erwarten ihre Ereignismakros nun mal im Code-Modul des Tabellenblatts.
Mit dem Löschen des Blattes killst du ja auch das Axtive-X-Element mit seinem Makro. Das kommt bei Excel auch nicht so gut an - Makro-Ausführung wird normalerweise abgerochen.
Gruß
Franz
Kann dann wie folgt aussehen:
Sub Inhaltsverzeichnis()
Application.DisplayAlerts = False
Sheets("Inhaltsverzeichnis").Delete
Application.DisplayAlerts = True
Worksheets.Add before:=ActiveWorkbook.Sheets(1)
With ActiveSheet
.Name = "Inhaltsverzeichnis"
'Rechteck als Schaltfläche einfügen
Call fncRechteck_Bunt("Aktualisieren", _
.Range("B2").Left, .Range("B2").Top, 120, 30, _
strOnAction:="Inhaltsverzeichnis", _
lngFillForeColorRGB:=RGB(255, 255, 0), _
strFontName:="Verdana", intFontSize:=14)
End With
End Sub
Function fncRechteck_Bunt(ByVal strCaption As String, _
ByVal dblLeft As Double, ByVal dblTop As Double, _
ByVal dblWidth As Double, ByVal dblHeight As Double, _
Optional ByVal strOnAction As String, _
Optional ByVal lngFillForeColorRGB As Long = 14277081, _
Optional ByVal strFontName As String = "Arial", _
Optional ByVal intFontSize As Integer = 12, _
Optional wks As Worksheet) As Object
'   lngFillForeColorRGB: 14277081  = hellgrau (RGB(217, 217, 217)
'   Rechteck mit Doppelline als Rahmen, schwarzer Schrift (msoShapeStylePreset1)
Dim objShape As Object
If wks Is Nothing Then Set wks = ActiveSheet
'Form einfügen
Set objShape = wks.Shapes.AddShape(msoShapeRectangle, dblLeft, dblTop, _
dblWidth, dblHeight)
Set fncRechteck_Bunt = objShape
With objShape
.ShapeStyle = msoShapeStylePreset1 'Weiß mit schwarzem Rahmen, schwarzer Shrift
With .TextFrame2 'Textfeld
.VerticalAnchor = msoAnchorMiddle
With .TextRange
.ParagraphFormat.Alignment = msoAlignCenter
With .Font
.NameComplexScript = strFontName
.NameFarEast = strFontName
.Name = strFontName
.Size = intFontSize
.Strikethrough = False
.Superscript = False
.Subscript = False
End With
.Characters.Text = strCaption 'muss nach den Formatierungen eingefügt werden!
End With
End With
With .Fill 'Füllfarbe
.Visible = msoTrue
.ForeColor.RGB = lngFillForeColorRGB
.Transparency = 0
.Solid
End With
With .Line 'Rahmen
.Visible = msoTrue
.Weight = 2.25
.Style = msoLineThinThin
End With
.Shadow.Type = msoShadow21 'Schatten rechts-unten
If strOnAction  "" Then
.OnAction = strOnAction
End If
End With
End Function

Anzeige
AW: CommandButton mit VBA-Code zuweisen
31.10.2015 09:49:45
Hermann
Hallo Franz,
ich habe die "Call fncRechteck_Bunt" in meinen Code "Inhaltsverzeichnis_erstellen" eingebaut.
Hurra!! Es funktioniert genau so, wie ich es wollte.
Da ich wenig bis sehr wenig VBA-Kenntnisse habe, konnte ich doch den Code der Function lesen und umsetzen. Vielen Dank, für die verständliche Schreibweise.
Beim 2.Teil muß ich leider passen.
Mein Verständnis: Er erstellt mir nur den farbigen Button.
Diesen Code werde ich in einem Übungssheet für mich als Übung bearbeiten und ändern,
und hoffe, daß es mir in 2 Jahren gelingt, so etwas ohne fremde Hilfe selbst zu erstellen.
PS: Warum erscheinen meine Beiträge eigentlcih immer doppelt in der Forumsliste?
Nochmals tausend Dank,
Gruß, Hermann

Anzeige
AW: CommandButton mit VBA-Code zuweisen
31.10.2015 09:50:23
Hermann
Hallo Franz,
ich habe die "Call fncRechteck_Bunt" in meinen Code "Inhaltsverzeichnis_erstellen" eingebaut.
Hurra!! Es funktioniert genau so, wie ich es wollte.
Da ich wenig bis sehr wenig VBA-Kenntnisse habe, konnte ich doch den Code der Function lesen und umsetzen. Vielen Dank, für die verständliche Schreibweise.
Beim 2.Teil muß ich leider passen.
Mein Verständnis: Er erstellt mir nur den farbigen Button.
Diesen Code werde ich in einem Übungssheet für mich als Übung bearbeiten und ändern,
und hoffe, daß es mir in 2 Jahren gelingt, so etwas ohne fremde Hilfe selbst zu erstellen.
PS: Warum erscheinen meine Beiträge eigentlcih immer doppelt in der Forumsliste?
Nochmals tausend Dank,
Gruß, Hermann

Anzeige
zu oft F5 gedrückt ? ... kwT
31.10.2015 10:01:51
Matthias
;

Forumthreads zu verwandten Themen

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