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

ImageList-Steuerelement in Userform

Forumthread: ImageList-Steuerelement in Userform

ImageList-Steuerelement in Userform
20.02.2005 17:22:45
ransi


      
Hallo
Ich habe ein Problem mit dem 
"ImageList" Steuerelement.
In einer Userform habe ich eins eingebaut.
nun wollte ich es mit diesem Code füllen:
Sub bilder_rein_in_Uf()
Dim i As Integer
On Error Resume Next
For i = 2 To 31181 'Es gibt 966 gifs im Verzeichniss wo die datei liegt 
'durchnummeriert von 2 bis 31181 wobei nicht alle Zahlen vergeben sind
'dateiname ist z.B. 123.gif
UserForm1.ImageList1.ListImages.Add , Key:="ID:=" & i, Picture:=LoadPicture(CStr(i) & ".gif")
Next
MsgBox UserForm1.ImageList1.ListImages.Count
'Die box zeigt den Richtigen Wert.(966)
End Sub
Kontrolliere Ich jetzt Die ImageList ist sie leer. :-((
Sub test()
MsgBox UserForm1.ImageList1.ListImages.Count
'gibt auch 0
End Sub

Füge ich aber eine ImageList 
in ein tabellenblatt ein und fülle es mit dem gleichen angepassten code
ist alles 
in ordnung. Die bilder bleiben in der ImageList auch wenn ich die datei schliesse und wieder öffne.
Sub bilder_rein_in_Blatt()
Dim i As Integer
On Error Resume Next
For i = 2 To 31181 'Es gibt 966 gifs 
ImageList1.ListImages.Add , Key:="ID:=" & i, Picture:=LoadPicture(CStr(i) & ".gif")
Next
MsgBox ImageList1.ListImages.Count
'gibt 966 was auch richtig ist
End Sub
Sub test()
MsgBox ImageList1.ListImages.Count
'gibt 966 also korrekt
End Sub
nun meine Frage:
Warum nimmt die imagelist 
in der userform nicht die angebotenen .gifs , bzw. wie
kann ich sie dazu bewegen sie doch anzunehmen ?
danke schon mal ins vorraus
ransi 

     Code eingefügt mit Syntaxhighlighter 3.0


Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ImageList-Steuerelement in Userform
20.02.2005 17:58:50
Fred
Hi,
wo ist denn in dem Code die Pfadangabe?
ImageList1.ListImages.Add , Key:="ID:=" & i, Picture:=LoadPicture(CStr(i) & ".gif")
Fred
geht auch mit pfad nicht
20.02.2005 18:05:14
ransi
hallo fred
danke für dein interesse.
aber mit pfad habe ich auch schon durch.
wenn die pictures im selben verzeichniss liegen, muss es auch ohne gehn.
die msgbox gibt ja nach der schleife den korrekten wert.

der zweite code "Sub bilder_rein_in_Blatt()" tut es ja auch ohne pfad.
ransi
Anzeige
AW: ImageList-Steuerelement in Userform
20.02.2005 18:23:54
K.Rola
Hallo,
wenn du die icon zur Laufzeit lädst, wie willst du da sehen, was in der ImageList steht?
Zur Entwurfszeit ist sie natürlich leer.
Hast du die Zuweisung zur ImageCombo oder Treeview gemacht?
Gruß K.Rola
im TreeView
20.02.2005 18:37:43
ransi
hallo k.rola
wenn ich in der imagelist im blatt nach dem befüllen in den entwicklungsmodus gehe,
rechte maus drauf
imagelistctrl-object-properties
register images
dann seh ich die bilder.
die sind dauerhaft.
wenn ich in der imagelist in der UF nach dem befüllen in den entwicklungsmodus gehe,
rechte maus drauf
Eigenschaften-benutzerdefiniert
register images
dann ist da nichts.
obwohl die box nach der schleife mir anzeigt das die bilder da sind.
mein ziel ist es die bilder dauerhaft in die list zu bringen.
dazu der code. der soll 1X zum füllen der imageList laufen und dann in die akten.
wenn ich die imageList in der uf händisch (register image, insert picture...)
fülle sind sie auch dauerhaft.
aber bei 966 bildern von hand den key einzutragen ist eine lebensaufgabe.
den key brauch ich später für die zuweisung an die nodes im treeview.
ransi
Anzeige
AW: im TreeView
20.02.2005 19:04:01
K.Rola
Hallo,
dauerhaft bekommst du sie nur zur Entwurfszeit, wie von dir ja erwähnt, in die
ImageList. Das ist nun mal so.
Das Verhalten im Tabellenblatt ist ja sehr merkwürdig, ich hab es aber noch nie
probiert.
Gruß K.Rola
zur not die zuweisung ändern.
20.02.2005 19:09:54
ransi
hallo k.rola
zur Not mache ich die zuweisung zu dem treeview so:
with treeview1
.imagelist=worksheets("Tabelle1").imagelist1.listimage
.
.code zum erstellen der knoten
.
.
end with
aber irgendwie befriedigt mich das nicht.
ransi
Anzeige
AW: zur not die zuweisung ändern.
20.02.2005 19:36:00
K.Rola
Hallo,
finde ich schon bemerkenswert, dass die icon dauerhaft in der ImageList verbleiben,
wenn sich ImageList in einer Tabelle befindet, war mir neu.
Gruß K.Rola
mir auch neu, aber...
20.02.2005 19:59:19
ransi
hallo
...für mein vorhaben nicht verkehrt, da ich dann nicht die knapp 1000 gifs immer wieder
neu ins ImageList laden muss.Dauert bei meinem erbsenzähler nämlich eine ganze weile.
Da das ganze wenns fertig ist in die person.xls soll wäre es halt schöner gewesen
wenn das ImageList in der userform auch dauerhaft ist.
ich stelle mal auf "Frage noch offen".
vielleicht fällt ja jemandem doch noch eine lösung ein.
hab da zwar wenig hoffnung , aber wer weiss...
ransi
Anzeige
AW: mir auch neu, aber...
21.02.2005 18:19:37
Felix
Hast du es mal in einem VB-Forum versucht, da ist die Chance auf Antwort größer?
F.
;
Anzeige

Infobox / Tutorial

ImageList-Steuerelement in Userform nutzen


Schritt-für-Schritt-Anleitung

  1. Userform erstellen: Öffne Excel und erstelle eine neue Userform im Visual Basic for Applications (VBA) Editor.

  2. ImageList-Steuerelement hinzufügen: Füge das ImageList-Steuerelement zur Userform hinzu. Du kannst dies über die Werkzeugpalette tun.

  3. Code zum Befüllen der ImageList: Verwende den folgenden VBA-Code, um Bilder in die ImageList zu laden:

    Sub bilder_rein_in_Uf()
       Dim i As Integer
       On Error Resume Next
       For i = 2 To 31181 ' Anzahl der Bilder anpassen
           UserForm1.ImageList1.ListImages.Add , Key:="ID:=" & i, Picture:=LoadPicture(CStr(i) & ".gif")
       Next
       MsgBox UserForm1.ImageList1.ListImages.Count
    End Sub
  4. Prüfen der Bildanzahl: Mit dem MsgBox-Befehl kannst du die Anzahl der geladenen Bilder überprüfen. Achte darauf, dass die Pfadangabe korrekt ist, wenn sich die Bilder in einem anderen Verzeichnis befinden.


Häufige Fehler und Lösungen

  • ImageList bleibt leer: Wenn die ImageList in der Userform leer bleibt, kann dies an folgenden Gründen liegen:

    • Pfadfehler: Überprüfe, ob der Pfad zu den Bildern korrekt ist. Wenn sich die Bilder im selben Verzeichnis wie die Arbeitsmappe befinden, sollte der Pfad nicht notwendig sein.
    • Laufzeitfehler: Verwende On Error Resume Next, um Laufzeitfehler zu ignorieren, aber achte darauf, dass du die Fehlerursache identifizierst.
  • Bilder nicht dauerhaft: Wenn die Bilder in der Userform nach dem Schließen und Öffnen nicht erhalten bleiben, liegt dies daran, dass die ImageList nur zur Laufzeit gefüllt wird. Um die Bilder dauerhaft zu speichern, ist es notwendig, sie in einem Arbeitsblatt zu speichern.


Alternative Methoden

Wenn das ImageList-Steuerelement in der Userform nicht wie gewünscht funktioniert, kannst du folgende Alternativen in Betracht ziehen:

  • Image-Steuerelement: Statt einer ImageList kannst du das Standard-Image-Steuerelement verwenden, um Bilder einzufügen. Dies könnte die Handhabung vereinfachen.
  • Verwendung von Collections: Anstatt die Bilder in einer ImageList zu speichern, könntest du eine Collection verwenden, um die Bilder zu speichern und später abzurufen.

Praktische Beispiele

Hier ist ein Beispiel, wie du die ImageList in einer Userform verwenden kannst:

Private Sub UserForm_Initialize()
    Call bilder_rein_in_Uf
    ' Beispiel für das Zuweisen eines Bildes zu einem Image-Steuerelement
    Me.Image1.Picture = UserForm1.ImageList1.ListImages(1).Picture
End Sub

In diesem Beispiel wird beim Initialisieren der Userform die bilder_rein_in_Uf-Subroutine aufgerufen, und das erste Bild aus der ImageList wird einem Image-Steuerelement zugewiesen.


Tipps für Profis

  • Kombination mit TreeView: Du kannst die ImageList auch mit einem TreeView-Steuerelement kombinieren, um eine visuelle Struktur zu erstellen. Stelle sicher, dass die Zuweisung korrekt ist, indem du den ImageList-Eigenschaft des TreeView verwendest.

  • Optimierung der Ladezeiten: Wenn du viele Bilder lädst, könnte dies die Leistung beeinträchtigen. Überlege, die Bilder nur bei Bedarf zu laden oder sie in einer anderen Struktur zu speichern.


FAQ: Häufige Fragen

1. Warum ist die ImageList in der Userform manchmal leer? Die ImageList wird zur Laufzeit gefüllt, und wenn der Code nicht erfolgreich ausgeführt wird, könnte die Liste leer bleiben. Überprüfe die Pfade und den Code.

2. Wie kann ich sicherstellen, dass die Bilder dauerhaft sind? Um Bilder dauerhaft in der ImageList zu speichern, musst du sie in einem Arbeitsblatt ablegen oder die ImageList in einer Tabelle verwenden, die beim nächsten Öffnen verfügbar bleibt.

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