Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Passfoto in Userform anzeigen

639 views
Skip to first unread message

Kröhan Herbert

unread,
Nov 30, 2005, 6:47:45 AM11/30/05
to
Hallo zusammen, brauche nochmal Hilfe von den Experten.
Ich arbeite mit E2003.
Habe eine Tabelle mit Mitgliederdaten. Dazu wird beim Start der Tabelle eine
UserForm göffnet.
In TextBox1 ist eine Suchroutine integriert, die mir je nach eingabe des
Anfangsbuchstaben der Mitgliedsnummer z.B.
A0001 oder B0005 die gefundenen Datensätze in einem Listenfeld darstellt.
Klicke ich jetzt auf einen Datensatz wird dieser zum bearbeiten in die Maske
übernommen. Ich möchte gern das zu jeden Datensatz auch das Passfoto in der
Maske angezeigt wird. Die Fotos liegen in einem Ordner "Bilder" als bmp
Datei vor.
Hat jemand für meinen Wunsch eine Lösung parat.
Kann gerne eine abgespeckte Version der Datei zukommen lassen.

Mfg Herbert Kröhan


stefan onken

unread,
Nov 30, 2005, 7:02:09 AM11/30/05
to
Hallo Herbert,
das geht mittels LoadPicture, etwa so:

erstelle auf dem UserForm ein Anzeige-Steuerelement (Image, ist in der
Werkzeugsammlung des UserForm enthalten), es geht aber auch zB mit
einem Rahmen-Steuerelement

Zuweisung per Code dann

bildname = "bild.bmp"
UserForm1.Image1.Picture = LoadPicture("C:\Bilder\" & bildname)

Beide Steuerelemente haben die Eigenschaft PictureSizeMode, damit das
Bild dann an die Größe des Steuerelementes angepasst werden kann.

Gruß
stefan

Kröhan Herbert

unread,
Nov 30, 2005, 7:24:19 AM11/30/05
to
Mus ich diese Zuweisung für jedes Bild machen? Wenn ich 80 Mitglieder habe,
habe ich auch 80 Bilder.
Kanst du mir ein kurzes Gerüst der Prozedur für 2 Bilder aufzeigen.
Herbert

"stefan onken" <steo...@web.de> schrieb im Newsbeitrag
news:1133352128.9...@g14g2000cwa.googlegroups.com...

stefan onken

unread,
Nov 30, 2005, 8:10:35 AM11/30/05
to
Hallo Herbert,
nein, nur einmal, und zwar in das Click-Ereignis des Listenfeldes (bzw
das Ereignis, das du verwendest, wenn etwas in der Listbox ausgewählt
wird).
Deine Daten darin sind A0001 etc. Wenn deine Bilder nun ebenso benannt
sind (also A0001.bmp etc), könnte der Code so aussehen:

Sub ListBox1_Click()
'dein anderer Code
UserForm1.Image1.Picture = LoadPicture("C:\Bilder\" & Listbox1.Value
&".bmp")
End Sub

Wenn die Bilder anders benannt sind als die Einträge in der Listbox,
musst du in deiner Tabelle eine Verbindung zwischen A0001 und dem
Bildnamen erstellen, zB in einer benachbarten Zelle. Dann könntest du
nach A0001 suchen und aus der Nachbarzelle den Bildnamen holen (Bsp:
A0001 steht in Spalte A, der Bildname in Spalte B):

Private Sub ListBox1_Click()
r = Range("A:A").Find(ListBox1).Row
UserForm1.Image1.Picture = LoadPicture("C:\Bilder\" & Range("B"&r))
End Sub

Du könntest aber auch die schon vorhanden Suchroutine erweitern und
den Bildnamen zB in einer zweiten Spalte der Listbox auflisten.

Kröhan Herbert

unread,
Nov 30, 2005, 8:51:25 AM11/30/05
to
Hallo Stefan
Super das klappt alles wunderbar. Ich habe die erste Variante angewendet
indem ich die Bilder mit der Mitgliedsnummer bezeichnet. habe. A0001 =
A0001.bmp.

Ein kleines Problem bleibt. Ich kann indem Formular mittels einer
Schaltfläche die Felder leeren. Das Bild bleibt jetzt natürlich stehen bis
ich einen neuen Satz ausgewählt habe. Wäre schön wenn das Bild mit gelöscht
wird.

Hier der Code der der Schaltfläche "Felder leeren" zugewiesen ist.

Sub FelderLöschen()
Dim tb As Object

With UserForm3
.ListBox1.Clear
For Each tb In .Controls
If TypeName(tb) = "TextBox" Then tb.Text = ""
Next tb
End With
End Sub

Ich bin jetzt bis 18 Uhr unterwegs, kann dir also erst nach 18 Uhr
antworten.

Danke schon mal für die ausgezeichnete Hilfe

Herbert Kröhan


stefan onken

unread,
Nov 30, 2005, 9:25:01 AM11/30/05
to
Hallo Herbert,
mit Image1.Picture = Nothing wird das Steuerelement geleert, also

Sub FelderLöschen()
Dim tb As Object

With UserForm3
.Image1.Picture = Nothing


.ListBox1.Clear
For Each tb In .Controls
If TypeName(tb) = "TextBox" Then tb.Text = ""
Next tb
End With
End Sub

Gruß
stefan

Kröhan Herbert

unread,
Nov 30, 2005, 2:38:35 PM11/30/05
to
Hallo Stefan; das mit den Feldern leeren funktioniert.
Einne weitere Fehlermeldungen tritt auf:
Wird ein Datensatz angeklickt, für den noch kein Foto vorhanden ist gibt es
eine Fehlermeldung?
Fehlermeldung muss irgendwie abgefangen werden.

Danke Herbert


"stefan onken" <steo...@web.de> schrieb im Newsbeitrag

news:1133360701.3...@g43g2000cwa.googlegroups.com...

stefan onken

unread,
Dec 1, 2005, 4:02:41 AM12/1/05
to
Hallo Herbert,
du könntest mit der Dir-Funktion prüfen, ob die Passbild-Datei
existiert, etwa so:

Private Sub ListBox1_Click()
BildName = "D:\bilder\" & ListBox1 & ".bmp"
If Dir(BildName) <> "" Then
Image1.Picture = LoadPicture(BildName)
Else
Image1.Picture = Nothing
End If

Kröhan Herbert

unread,
Dec 1, 2005, 4:29:31 AM12/1/05
to
Hallo Stefan
Habe deinen Code eingegeben. Fehler beim kompeilieren: Variable nicht
definiert.
Markiert ist "BildName"

Herbert

"stefan onken" <steo...@web.de> schrieb im Newsbeitrag

news:1133424598.9...@g47g2000cwa.googlegroups.com...

stefan onken

unread,
Dec 1, 2005, 4:46:38 AM12/1/05
to
Hallo Herbert,
Ursache: im VBA-Editor ist unter Extras/Optionen/Editor ein Häkchen
bei:
Variablendeklaration erforderlich
Im Codemodul steht ganz oben dann Option Explicit
So ist man gegen Vertipper bei den Variablen geschützt, muss aber alle
Variablen einmal deklarieren, und zwar mit der Dim-Anweisung:

Private Sub ListBox1_Click()
Dim BildName


BildName = "D:\bilder\" & ListBox1 & ".bmp"
If Dir(BildName) <> "" Then
Image1.Picture = LoadPicture(BildName)
Else
Image1.Picture = Nothing
End If
End Sub

Für mehr Infos: cursor in das Wort Dim stellen und F1 drücken.

Kröhan Herbert

unread,
Dec 1, 2005, 5:18:11 AM12/1/05
to
So Stefan das wars.
Ich bedanke mich nochmals für die ausgezeichnete und kompetente Hilfe.
Vieleicht laufen wir uns ja auf dieser Plattform nochmal über den Weg.
Ich wünsche ein Frohes Weihnachtsfest und einen Guten Rutsch.

Herbert kröhan

"stefan onken" <steo...@web.de> schrieb im Newsbeitrag

news:1133430398....@g43g2000cwa.googlegroups.com...

stefan onken

unread,
Dec 1, 2005, 5:26:00 AM12/1/05
to
hi Herbert,
das wünsche ich Dir auch schon mal!
0 new messages