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

Image mit variable als Name aufrufen

Forumthread: Image mit variable als Name aufrufen

Image mit variable als Name aufrufen
09.11.2016 16:08:22
Llemaban
Hi zusammen
Ich steck leider fest...
Ich habe eine ListBox mit Artikelnummern, dazu soll rechts jeweils das Bild angezeigt werden, was gerade angeklickt ist.
Ich weiss, dass dies geht, wenn ich direkt den Namen des Image verwende:
UserForm1.Image1.Picture = Worksheets("data").Image1.Picture
Doch ich habe nun mehrere Images im Tabellenblatt, halt für jeden Artikel ein eigenes. (Artikel 1=Image1, Artikel 2=Image2, ...)
Nun wollte ich über ein string, welcher den exakten Namen des Image enthält, das Bild laden, doch dies funktioniert (logischerweise) nicht:
dim str as string
str = "Image" & i
UserForm1.Image1.Picture = Worksheets("data").str.Picture
Hat jemand eine Idee?
lg Llemaban
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Image mit variable als Name aufrufen
09.11.2016 16:27:24
Nepumuk
Hallo,
so geht's:
 Dim strImage As String
strImage = "Image" & i
Set Image1.Picture = Worksheets("data").OLEObjects(strImage).Object.Picture

str ist eine Funktion in VBA und sollte daher keinesfalls als Variablenname verwendet werden.
Gruß
Nepumuk
Anzeige
AW: Image mit variable als Name aufrufen
10.11.2016 07:34:23
Llemaban
Hallo Nepumuk
Da hätte ich lang versuchen können mit meinen Versuchen ^^...
Funktioniert super, danke vielmals.
lg Llemaban
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Laden von Bildern in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Erstelle eine UserForm in Excel, die eine ListBox und ein Image-Control enthält.

  2. Füge Artikelnummern in die ListBox ein, die den Namen der Bilder entsprechen (z.B. "Image1", "Image2" usw.).

  3. Verwende den folgenden VBA-Code, um das Bild dynamisch basierend auf der Auswahl in der ListBox zu laden:

    Private Sub ListBox1_Click()
       Dim i As Integer
       Dim strImage As String
    
       i = ListBox1.ListIndex + 1 ' Annahme: ListBox ist 0-basiert
       strImage = "Image" & i
       UserForm1.Image1.Picture = Worksheets("data").OLEObjects(strImage).Object.Picture
    End Sub
  4. Teste die Funktionalität, indem du auf verschiedene Artikelnummern in der ListBox klickst. Das entsprechende Bild sollte sich im Image-Control ändern.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden.“

    • Lösung: Überprüfe die Namen der Bilder im Arbeitsblatt. Sie müssen exakt mit dem String übereinstimmen, den du in deinem VBA-Code verwendest.
  • Fehler: „Typen sind inkompatibel.“

    • Lösung: Stelle sicher, dass das Image-Control in der UserForm richtig konfiguriert ist und du die richtige Excel-Image-Funktion verwendest.

Alternative Methoden

Eine andere Möglichkeit, Bilder in Excel zu laden, besteht darin, die Shapes-Sammlung zu verwenden:

Private Sub ListBox1_Click()
    Dim i As Integer
    Dim strImage As String

    i = ListBox1.ListIndex + 1
    strImage = "Image" & i
    UserForm1.Image1.Picture = Worksheets("data").Shapes(strImage).Picture
End Sub

Diese Methode ist besonders nützlich, wenn du die Bilder als Shapes in deinem Arbeitsblatt hast.


Praktische Beispiele

Angenommen, du hast drei Bilder in deinem Arbeitsblatt mit den Namen "Image1", "Image2" und "Image3". Durch das Klicken auf die entsprechenden Artikelnummern in der ListBox werden die Bilder angezeigt:

  • Artikel 1: Zeigt „Image1“
  • Artikel 2: Zeigt „Image2“
  • Artikel 3: Zeigt „Image3“

Stelle sicher, dass die ListBox die entsprechenden Artikelnummern korrekt anzeigt.


Tipps für Profis

  • Benennung der Bilder: Halte die Benennung der Bilder konsistent, um die Nutzung der excel image funktion zu erleichtern. Vermeide ungewöhnliche Zeichen in den Namen.
  • Performance: Achte darauf, dass viele große Bilder die Ladezeiten der UserForm negativ beeinflussen können. Optimiere die Bildgrößen vor dem Import.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung im VBA-Code, um mögliche Laufzeitfehler abzufangen:

    On Error Resume Next
    UserForm1.Image1.Picture = Worksheets("data").OLEObjects(strImage).Object.Picture
    If Err.Number <> 0 Then
       MsgBox "Bild konnte nicht geladen werden"
       Err.Clear
    End If

FAQ: Häufige Fragen

1. Frage: Wie kann ich sicherstellen, dass die Bilder im richtigen Format vorliegen? Antwort: Stelle sicher, dass die Bilder im .jpg oder .png Format vorliegen, da diese Formate von der Excel-Image-Funktion unterstützt werden.

2. Frage: Kann ich die Bilder auch ohne UserForm anzeigen? Antwort: Ja, du kannst die Bilder auch direkt in einem Arbeitsblatt anzeigen, indem du die Shapes oder das Bild-Control verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige