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

Forumthread: Eigenschaft Click bei Image Objekten

Eigenschaft Click bei Image Objekten
03.08.2004 14:19:37
Wiki
Hallo,
ich möchte bei einem Klick auf ein Image- (Anzeige-) Objekt in ebendieses ein neues Bild laden. Meine Funktion sieht so aus:

Private Sub Image1_Click()
Image1.Picture = LoadPicture("c:\blablub.bmp")
End Sub

Das Bild wird aber nicht angezeigt... Lustigerweise ist es aber problemlos Möglich, beim Klick auf Image1 in z.b. Image2 ein anderes Bild reinzuladen; Image1.Picture = LoadPicture("c:\blablub.bmp") funktioniert problemlos in der Funktion. Gibts n Trick wie ich trotzdem das Bild in mein Image1 reinladen kann?
Anzeige
AW: Eigenschaft Click bei Image Objekten
kdosi
Hallo Wiki, hier ein Beispiel. Funzt es ? :-), Gruss kdosi


Option Explicit
Private Sub Image1_Click()
    On Error GoTo Err_In_Image1_Click
    
    Dim ole_picture As OLEObject, pfad
    
    Set ole_picture = ActiveSheet.OLEObjects("Image1")
    pfad = Application.InputBox("Pfad eingeben", "Image1_Click", "C:\Temp\Test.jpg")
    
    If (pfad <> FalseThen
        With ole_picture.Object
            .Picture = LoadPicture(pfad)
            .AutoSize = True
        End With
    End If
        
    Exit Sub
    
Err_In_Image1_Click:
    If (Err.Number = 53) Then
        VBA.MsgBox "Datei nicht gefunden. ( Fehler Nummer " & Err.Number & " )", vbCritical, "Image1_Click"
    Else
        VBA.MsgBox "Fehler " & Err.Number, vbCritical, "Image1_Click"
    End If
End Sub


Anzeige
Es klappt!
Wiki
Hi,
wunderbar, danke kdosi... hatte vergessen zu erwähnen, dass das ganze auf nem Vba-userfrm stattfindet, aber dein Ansatz hat geholfen... nur noch aus dem OLE-Objekt ein Objekt machen, und natürlich die Zuweisung entsprechend anpassen...
AW: Eigenschaft Click bei Image Objekten
Ulf
Geht nicht, warum auch immer.
Ulf
AW: Eigenschaft Click bei Image Objekten
Michi
Hallo,
mit der .Repaint-Methode habe ich's hingekriegt.
Beispiel:
Image1.Picture = LoadPicture("c:\blablub.bmp")
Userform1.Repaint
Ob's noch ne bessere Lösung gibt, weiss ich nicht.
mfg
mk
Anzeige
AW: Eigenschaft Click bei Image Objekten
Ulf
Was solls da noch besseres geben, ist doch Klasse.
Ulf
AW: Eigenschaft Click bei Image Objekten
Wiki
Funktioniert auch wunderbar, vielen Dank!
Besser ist...
Wiki
Image1.Picture = LoadPicture("c:\blablub.bmp")
Image1.Repaint
- das flackert nicht so, weil nicht das ganze Form neugemalt wird...
Anzeige
AW: Besser ist...
Ulf
Das geht nicht!
Ulf
AW: Besser ist...
Michi
"Das geht nicht!"
Stimmt, .Repaint kann man entweder auf das gesamte Formular anwenden oder aber auf alle Objekte innerhalb eines Rahmens(frame).
mfg
mk
AW: Besser ist...
Wiki
In der tat, hab mich verschrieben... aber in der Click Prozedur funktioniert definitiv ein Me.Repaint - so hab ichs nämlich jetzt.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Eigenschaft Click bei Image Objekten in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Bild in einem Image-Objekt bei einem Klick zu ändern, kannst Du die folgende VBA-Procedure verwenden. Diese Anleitung geht davon aus, dass Du ein UserForm mit einem Image-Objekt erstellt hast.

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein UserForm hinzu und ziehe ein Image-Control (z.B. Image1) auf das Formular.
  3. Doppelklicke auf das Image-Objekt, um den Code-Editor für das Click-Ereignis zu öffnen.
  4. Füge den folgenden Code in das Click-Ereignis ein:
Private Sub Image1_Click()
    Image1.Picture = LoadPicture("c:\blablub.bmp")
    Me.Repaint
End Sub

Dieser Code lädt ein Bild von dem angegebenen Pfad, wenn Du auf das Image klickst. Achte darauf, dass der Pfad zur Bilddatei korrekt ist.


Häufige Fehler und Lösungen

  • Fehler: Bild wird nicht angezeigt.

    • Lösung: Stelle sicher, dass der Pfad zur Bilddatei korrekt ist und dass die Datei existiert. Nutze On Error GoTo ErrHandler, um Fehler abzufangen.
  • Fehler: Bildflackern bei der Anzeige.

    • Lösung: Verwende Me.Repaint, um das Flackern zu reduzieren. Beispiel:
    Image1.Picture = LoadPicture("c:\blablub.bmp")
    Me.Repaint
  • Fehler: „Datei nicht gefunden“ Meldung.

    • Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei im richtigen Format vorliegt (z.B. BMP).

Alternative Methoden

Wenn Du eine andere Methode ausprobieren möchtest, kannst Du ein OLEObject verwenden. Hier ein Beispiel, das zeigt, wie Du das Bild über ein OLE-Objekt laden kannst:

Private Sub Image1_Click()
    Dim ole_picture As OLEObject
    Set ole_picture = ActiveSheet.OLEObjects("Image1")

    ole_picture.Object.Picture = LoadPicture("c:\blablub.bmp")
    ole_picture.Object.AutoSize = True
End Sub

Diese Methode kann hilfreich sein, wenn Du mit verschiedenen Bildformaten arbeitest.


Praktische Beispiele

Hier sind einige Beispiele, um das Image-Objekt in Excel VBA zu verwenden:

  1. Bild wechseln mit Benutzerinput:

    Private Sub Image1_Click()
       Dim pfad As String
       pfad = Application.InputBox("Gib den Bildpfad ein:", "Bild wechseln", "C:\Temp\Test.jpg")
    
       If pfad <> "" Then
           Image1.Picture = LoadPicture(pfad)
           Me.Repaint
       End If
    End Sub
  2. Dynamisches Laden von Bildern:

    Private Sub Image1_Click()
       Dim bildNummer As Integer
       bildNummer = Int((3 - 1 + 1) * Rnd + 1) ' Zufällige Zahl zwischen 1 und 3
       Image1.Picture = LoadPicture("c:\blablub" & bildNummer & ".bmp")
       Me.Repaint
    End Sub

Tipps für Profis

  • Nutze Application.EnableEvents = False und Application.EnableEvents = True um zu verhindern, dass andere Ereignisse während des Bildwechsels ausgelöst werden.
  • Wenn Du die LoadPicture-Funktion verwendest, stelle sicher, dass das Bild im richtigen Format vorliegt (z.B. BMP).
  • Verwende vbCritical für Fehlermeldungen, um die Benutzererfahrung zu verbessern:

    MsgBox "Datei nicht gefunden!", vbCritical, "Fehler"

FAQ: Häufige Fragen

1. Warum wird das Bild nicht angezeigt?
Es könnte daran liegen, dass der Dateipfad falsch ist oder das Bildformat nicht unterstützt wird. Überprüfe den Pfad und das Format.

2. Wie kann ich mehrere Bilder laden?
Du kannst eine Zufallszahl generieren, um verschiedene Bilder aus einem festgelegten Ordner zu laden, wie im praktischen Beispiel gezeigt.

3. Was ist der Unterschied zwischen einem OLE-Objekt und einem Image-Objekt?
OLE-Objekte ermöglichen das Einfügen von verschiedenen Dateiformaten, während Image-Objekte hauptsächlich für die Anzeige von Bildern verwendet werden.

4. Wie kann ich das Flackern beim Bildwechsel verhindern?
Verwende die Me.Repaint-Methode oder Application.ScreenUpdating = False vor dem Bildwechsel und setze Application.ScreenUpdating = True danach.

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