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

Button mir Grafik, FaceId Nr über Inputbox

Forumthread: Button mir Grafik, FaceId Nr über Inputbox

Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 15:35:08
Dieter(Drummer)
Guten Tag VBA Spezialisten,
anbei meine Musterdatei, in der folgendes funktioniert:
https://www.herber.de/bbs/user/130899.xlsm
Per Klick auf Commandbutton in Tabelle1, wird links von Caption, per FaceId Nr. 2, die Grafik "ABC" eingefügt. Das funktioniert.
Wie muss der Code lauten, dass per Inpubox die FaceId Nr. eingegeben werden kann, damit nicht immer im Code die FaceId Nr, geändert werden muss, wenn andere Grafik in Button soll?
Mit der Bitte um Hilfe,
grüßt, Dieter(Drummer)
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 15:43:21
Regina
Moin,
das sollte so funktionieren:
Private Sub CommandButton1_Click()
Dim lng_id As Long
lng_id = InputBox("ID?")
Set CommandButton1.Picture = Application.CommandBars.FindControl(ID:=lng_id).Picture
CommandButton1.PicturePosition = fmPicturePositionLeftCenter 'Picture Ausrichtung links vom  _
Buttontext
End Sub
Gruß
Regina
Anzeige
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 15:51:31
Dieter(Drummer)
Liebe Regina,
Danke für schnelle Lösung, die perfekt funktioniert. Herzlichen Dank!
Weißt du evtl. auch, wieviel FaceIds Nummern, in Excel 2010, zur Verfügung stehen?
Gruß, Dieter(Drummer)
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 15:59:09
Regina
... nein, da muss ich passen.
Gruß
Regina
AW: Danke Regina für Rückmeldung. owT
14.07.2019 16:05:54
Dieter(Drummer)
Anzeige
AW: Liste aller Shapes mit Id und Bezeichnung
14.07.2019 18:02:03
Dieter(Drummer)
Hallo Regina,
da du mir so schnell und toll geholfen hast, habe ich mal alle Shapes, Grafik mit ID Nr. und Bezeichnung, aufgelistet. Evtl. haben auch noch andere Forumsteilnehmer Interesse daran.
Es macht mir Spass, so etwas zu machen, auch wenn ich kein Spezialist bin :-).
Gruß und einen schönen Restsonntag,
Dieter(Drummer)
https://www.herber.de/bbs/user/130902.xlsx
Anzeige
AW: Button mit Grafik, FaceId Nr über Inputbox
15.07.2019 10:22:18
Dieter(Drummer)
Guten Morgen Regina,
Danke nochmal für deine gestrige Hilfe. Ich habe noch eine Bitte.
Kannst du mir evtl. den Code noch so erweitern, dass ich auch den CommandButton per Input wählen kann, auf dem dann per Input die gewählte Grafik (Shape) gewählt wird und dann in den ausgewählten CommandButton angefügt wird?
Hier der bisherige, von dir ergänzte Code:
'Mx: Muster für Symbol per FaceId in in Button einfügen
'Wenn Button In Tabelle ist
'Herber: von Regina Resch-Jansen am 14.07.2019 15:43:21
Private Sub CommandButton1_Click()
Dim lng_id As Long
lng_id = InputBox("ID?")
Set CommandButton1.Picture = Application.CommandBars.FindControl(ID:=lng_id).Picture
CommandButton1.PicturePosition = fmPicturePositionLeftCenter 'Picture Ausrichtung links vom _
Buttontext
End Sub
Ich hoffe, ich nerve dich nicht damit und freue mich, wenn da nochmal helfen kannst.
Gruß, Dieter(Drummer)
Anzeige
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 17:58:29
Nepumuk
Hallo Dieter,
es dürften so rund 15.000 Icons sein. Das letzte hat die Nummer 25.424. Zwischen dem 1. und dem letzten sind viele leere und viele doppelte. Du kannst es dir selbst mal ansehen:
Option Explicit

Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long

Public Sub Export_Icons()
    Dim objPicture As IPictureDisp
    Dim objCommandBar As CommandBar
    Dim objCommandBarButton As CommandBarButton
    Dim lngIndex As Long
    Dim strPath As String
    strPath = ThisWorkbook.Path & "\CommandbarIcons\"
    Call MakeSureDirectoryPathExists(strPath)
    Set objCommandBar = CommandBars.Add(Name:="Temp", Temporary:=True)
    Set objCommandBarButton = objCommandBar.Controls.Add(Type:=msoControlButton)
    On Error GoTo err_exit
    For lngIndex = 1 To 26000
        With objCommandBarButton
            .FaceId = lngIndex
            Set objPicture = .Picture
            Call stdole.SavePicture(Picture:=objPicture, _
                Filename:=strPath & Format(lngIndex, "0000") & ".bmp")
        End With
    Next
    err_exit:
    Set objPicture = Nothing
    CommandBars("Temp").Delete
End Sub

Die grauen Flächen enthalten kein Icon.
Gruß
Nepumuk
Anzeige
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 18:09:58
Dieter(Drummer)
Hallo Nepumuk,
Danke für deinen Code.
Habe in im Modul1 und bei Aktivierung kommt "Fehler 5", "Ungültige Prozedur oder ungültiges Argument", mit dieser gelben Zeile:
Set objCommandBar = CommandBars.Add(Name:="Temp", Temporary:=True)
Gruß, Dieter(Drummer)
Anzeige
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 18:47:51
Nepumuk
Hallo Dieter,
ich habe den Code gerade in Excel2013 laufen lassen und kein Problem damit. Versuch es mal so:
Set objCommandBar = Application.CommandBars.Add(Name:="Temp", Temporary:=True)

Gruß
Nepumuk
AW: Button mir Grafik, FaceId Nr über Inputbox
14.07.2019 19:04:02
Dieter(Drummer)
Danke Nepumuk,
schade, aber Fehler ist auch wieder so, auch mit deiner neuen Angabe. Evtl. kannst du ja mir deine Datei hier einfügen, ntürlich nur wenn es möglich ist. Ich habe Excel 2014.
Danke für deine Bemühung.
Gruß, Dieter(Drummer)
Anzeige
AW: Keine Mac Version ...
14.07.2019 19:47:56
Dieter(Drummer)
Hallo Nepumuk,
... danke für die Datei, aber bei öffnen der Datei wird nach einer Smartcard einfügen, so etwas ist bei mir nicht vorhanden. So kann ich die Datei nicht öffnen, es kommt auch die Aangaben, dass das Makro nicht vorhanden ist, als abgemeldet ist.
Da kann ich wohl nchts machen. Schade. Bisher hatte ich keine Probleme mit Eycel beim öffnen von xlsm Dateien.
Gruß, Dieter(Drummer)
Anzeige
AW: Keine Mac Version ...
14.07.2019 20:26:19
Nepumuk
Hallo Dieter,
das kommt von der digitalen Signatur. Bei mir laufen nur signierte Makros. Das bietet für mich die höchste Sicherheit. Also einfach im VBA-Editor unter Extras - Digitale Signatur auf Entfernen klicken. Dann sollte es für dich passen.
Gruß
Nepumuk
AW: Danke Nepumuk ... es halt geklappt ...
14.07.2019 20:03:25
Dieter(Drummer)
... und habs geschafft, Die Icons wurden direkt in einem Ornder eingefügt. Ich dachte sie würden in Tabellenblatt aufgelistet. Danke nochmal für deine Hilfe und Bemühung.
Gruß und einen erfeulichen Abend,
Dieter(Drummer)
Anzeige
das ist wieder eine typische DD Frage...
14.07.2019 15:46:02
robert
so einfach und er lässt sich bedienen
ID= irgendeine Variable oder eben Inputbox oder ActiveCell usw..............................
;
Anzeige
Anzeige

Infobox / Tutorial

Grafikbuttons in Excel mit FaceId über Inputbox erstellen


Schritt-für-Schritt-Anleitung

Um einen CommandButton in Excel mit einer Grafik per FaceId über eine Inputbox zu versehen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, die FaceId über eine Eingabeaufforderung zu ändern, ohne den Code selbst anpassen zu müssen.

  1. Öffne dein Excel-Dokument und wechsle in den VBA-Editor (drücke ALT + F11).

  2. Füge einen CommandButton in dein Arbeitsblatt ein.

  3. Doppelklicke auf den CommandButton, um das Codefenster zu öffnen.

  4. Kopiere und füge den folgenden Code ein:

    Private Sub CommandButton1_Click()
       Dim lng_id As Long
       lng_id = InputBox("Gib die FaceId ein:")
       Set CommandButton1.Picture = Application.CommandBars.FindControl(ID:=lng_id).Picture
       CommandButton1.PicturePosition = fmPicturePositionLeftCenter 'Bild links vom Text
    End Sub
  5. Schließe den VBA-Editor und teste das Makro, indem du auf den Button klickst.


Häufige Fehler und Lösungen

  • Fehler 5: Ungültige Prozedur oder ungültiges Argument
    Wenn du beim Ausführen des Codes auf diesen Fehler stößt, stelle sicher, dass du die Zeile Set objCommandBar = Application.CommandBars.Add(Name:="Temp", Temporary:=True) korrekt angegeben hast.

  • FaceId nicht gefunden
    Wenn die eingegebene FaceId nicht existiert, wird kein Bild angezeigt. Achte darauf, dass die eingegebene ID gültig ist und dass du die FaceId-Liste in Excel kennst.


Alternative Methoden

Eine weitere Möglichkeit, Icons in Excel zu verwenden, ist die Verwendung von Shape-Objekten. Du kannst Shapes direkt in dein Arbeitsblatt einfügen und diesen Shapes ein Bild zuweisen, indem du die Fill.UserPicture-Methode anwendest. Hier ein Beispiel:

Sub AddShapeWithPicture()
    Dim shp As Shape
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 100)
    shp.Fill.UserPicture "C:\Pfad\zu\deinem\Bild.jpg"
End Sub

Praktische Beispiele

Ein nützliches Beispiel für die Verwendung von FaceIds ist die Erstellung einer Liste von verfügbaren FaceIds. Du kannst den folgenden Code verwenden, um alle Icons mit ihren IDs aufzulisten:

Sub ListFaceIds()
    Dim i As Long
    For i = 1 To 26000
        On Error Resume Next
        Debug.Print i, Application.CommandBars.FindControl(ID:=i).Caption
    Next i
End Sub

Tipps für Profis

  • Nutze die CommandBars-Funktion, um die verfügbaren FaceIds zu durchforsten. Diese Funktion hilft dir, die richtigen IDs für deine Buttons zu finden.
  • Halte deine Excel-Version im Auge. Neuere Versionen unterstützen möglicherweise mehr FaceIds. In Excel 2010 stehen etwa 15.000 Icons zur Verfügung.
  • Wenn du mehrere Buttons hast, kannst du den Code modularisieren, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie viele FaceIds kann ich in Excel verwenden?
In Excel 2010 und neuer Versionen sind rund 15.000 FaceIds verfügbar, jedoch sind viele davon leer oder doppelt.

2. Was kann ich tun, wenn mein Button kein Bild zeigt?
Stelle sicher, dass die eingegebene FaceId korrekt ist und dass es sich um eine gültige ID handelt. Überprüfe auch, ob die CommandBars-Funktion funktioniert.

3. Wie kann ich die Icons speichern?
Du kannst die Icons über VBA exportieren, indem du die stdole.SavePicture-Methode verwendest, um sie in einem gewünschten Format zu speichern.

4. Funktioniert dieser Code in Excel für Mac?
Die Verwendung von CommandBars ist in Excel für Mac nicht vollständig unterstützt. Daher solltest du alternative Methoden für die Bildverwaltung in Betracht ziehen.

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