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

Forumthread: Bild in Shape in dynamisch Image anzeigen

Bild in Shape in dynamisch Image anzeigen
01.05.2016 10:59:21
windalf
Hallo,
ich habe eine Userform auf der ein Image bzw Anzeige liegt.
In Abhängigkeit von dem was der Benutzer für ein Einstellungen auf der Userform vornimmt möchte ich dass ein anderes Bild angezeigt wird.
Was funktioniert ist
Image.Picture = ThisWorkbook.Worksheets("Doku").MeinShapeDasEinBildBeinhaltet.
Was ich aber nun möchte ist etwas in der ARt
Dim str As String
Dim sh As Shape
str = "Shapename"
Set sh = ThisWorkbook.Worksheets("Doku").Shapes(str)
Image.Picture = sh.Picture 'Und das hier funktioniert nicht. WIe komme ich an das Bild im Shape um es auf dem "Anzeigefeld Image" auf der Userform zu nutzen?
Vielen Dank im Voraus
Gruß Windi...

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 11:02:10
Hajo_Zi
müsste es nich Sh.Name lauten?
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 11:14:21
Nepumuk
Hallo,
das geht nicht den das Bild ist ein Shape-Objekt und kein Picture-Objekt.
Der einfache Weg: Du speicherst die Bilder in Image-Controls in der Tabelle. Dann kannst du einfach
Image1.Picture = Tabelle1.Image1.Picture

benutzen.
Wenn du das nicht willst, dann bleibt nur der Umweg über 1. Das Bild exportieren und dann von der Festplatte laden, oder 2. ein wenig API-Zauber.
Gruß
Nepumuk

Anzeige
AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 12:20:40
windalf
Hallo Nepumuk,
danke für die Antwort
Nepumuk: das geht nicht den das Bild ist ein Shape-Objekt und kein Picture-Objekt.
Ist ja auch eine hilfreiche Aussage. Dann brauch ich zumindest nicht weiter zu suchen...
Nepumuk: Image1.Picture = Tabelle1.Image1.Picture
Ich verstehe noch nicht wie mir das hilft. Auch in dem Fall bin ich doch statisch und nicht dynamsich (in Abhängigkeit von einem Index oder String) unterwegs oder irre ich mich?
Nepumuk: oder 2. ein wenig API-Zauber.
Äh geht da vielleicht noch ein kleiner Hinweis mehr? ;-)

Anzeige
AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 12:28:08
Nepumuk
Hallo,
wie bestimmst du das Bild welches angezeigt werden soll (ich geh mal davon aus dass du eines von mehreren Bildern anzeigen willst).
Gruß
Nepumuk

AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 12:40:55
windalf
Im Moment so (Davon wollte ich aber weg und die Arrays in Abhängigkeit von einem Text befüllen, damit ich reihenfolge unabhängig bin. Sieht mir im Ergebnis nach einem langen if then else aus. Geht auch fand ich aber nicht schön..)
ReDim bildArray(x)
Set bildArray(0) = ThisWorkbook.Worksheets("Doku").Imageabc
Set bildArray(1) = ThisWorkbook.Worksheets("Doku").ImagexyziseEinfaerben
...
Private Sub anpassen(i As Long)
editKurzbeschreibung = textArray(i - 1)
editBemerkungen = textArrayDetails(i - 1)
Image.Picture = bildArray(i - 1).Picture
End Sub

Private Sub CommandButton1_Click()
Call anpassen(1)
End Sub

Anzeige
AW: Bild in Shape in dynamisch Image anzeigen
01.05.2016 13:16:03
Nepumuk
Hallo,
kannst du eine Mustermappe hochladen? Mir ist nämlich nicht klar was .Imageabc sein soll.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bild in Shape in dynamisch Image anzeigen


Schritt-für-Schritt-Anleitung

Um ein dynamisches Bild in einer Userform anzuzeigen, kannst du folgende Schritte befolgen:

  1. Erstelle eine Userform in Excel und füge ein Image-Control hinzu.

  2. Füge einen Button hinzu, um die Bildanzeige zu aktivieren.

  3. Verwende den folgenden VBA-Code, um das Bild dynamisch zu ändern:

    Private Sub CommandButton1_Click()
       Dim str As String
       Dim sh As Shape
       str = "Shapename" ' Ersetze "Shapename" durch den Namen deines Shapes
       Set sh = ThisWorkbook.Worksheets("Doku").Shapes(str)
       If Not sh Is Nothing Then
           Image1.Picture = sh.Picture
       End If
    End Sub
  4. Stelle sicher, dass das Shape, welches das Bild enthält, korrekt benannt ist.

  5. Teste die Userform, um zu prüfen, ob das Bild dynamisch angezeigt wird, wenn der Button gedrückt wird.


Häufige Fehler und Lösungen

  • Fehler: Das Bild wird nicht angezeigt.

    • Lösung: Überprüfe den Namen des Shapes. Stelle sicher, dass die Schreibweise genau übereinstimmt.
  • Fehler: sh.Picture funktioniert nicht.

    • Lösung: Achte darauf, dass das Shape tatsächlich ein Bild enthält. Überlege, ob du das Bild vielleicht als Image-Control in der Tabelle speichern solltest, wie in den Vorschlägen von Nepumuk.

Alternative Methoden

  1. Bilder in Image-Controls speichern: Du kannst die Bilder direkt in Image-Controls auf einem Arbeitsblatt speichern. Dann kannst du einfach folgende Zeile verwenden:

    Image1.Picture = Tabelle1.Image1.Picture
  2. API-Zugriff: Für fortgeschrittene Benutzer könnte der Zugriff auf die Windows-API eine Option sein, um Bilder dynamisch zu laden. Dies erfordert jedoch zusätzliche Kenntnisse in der VBA-Programmierung.


Praktische Beispiele

Hier ein Beispiel, wie du ein Array verwenden kannst, um Bilder dynamisch anzuzeigen:

Dim bildArray(1) As Object

Sub InitializeImages()
    Set bildArray(0) = ThisWorkbook.Worksheets("Doku").Imageabc
    Set bildArray(1) = ThisWorkbook.Worksheets("Doku").ImagexyziseEinfaerben
End Sub

Private Sub CommandButton1_Click()
    Call anpassen(1)
End Sub

Private Sub anpassen(i As Long)
    Image1.Picture = bildArray(i - 1).Picture
End Sub

Tipps für Profis

  • Verwende eine klare Struktur: Achte darauf, dass die Namen deiner Shapes und Controls eindeutig sind, um Verwirrungen zu vermeiden.
  • Fehlerbehandlung einbauen: Implementiere eine Fehlerbehandlung, um zu verhindern, dass die Userform abstürzt, wenn ein Bild nicht geladen werden kann.
  • Speichere Bilder effizient: Überlege, ob du Bilder in einer Datenbank oder in einer separaten Datei speichern möchtest, um die Dateigröße deiner Excel-Datei zu reduzieren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Bild dynamisch wechselt? Wenn du die richtigen Bedingungen im Code implementierst und die Namen der Shapes korrekt sind, sollte das Bild dynamisch wechseln.

2. Kann ich mehrere Bilder gleichzeitig anzeigen? Ja, du kannst mehrere Image-Controls in deiner Userform verwenden und sie entsprechend im Code anpassen.

3. Funktioniert das auch in älteren Excel-Versionen? Die meisten VBA-Funktionen sind in den neueren Excel-Versionen verfügbar, aber einige spezifische Funktionen könnten in älteren Versionen nicht unterstützt werden. Überprüfe die Kompatibilität deines Codes.

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