Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildauswahl nach Listboxselection

Bildauswahl nach Listboxselection
Ludwig
Hallo Experten
Ich möchte in einer UF entsprechend einer Listboxauswahl das entsprechende Bild im Imagerahmen anzeigen! Die Bilder sind in einem Tabellenblat (z.B. "Pic1") abgelegt!
Wie müßte der entsprechende code aussehen?
Vielen Dank im voraus für die Hilfe!
MfG
Ludwig

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bildauswahl nach Listboxselection
05.07.2011 09:30:53
Ludwig
Hallo Experten
Ist sicher etwas mühselig zu verstehen! Habe eine kleines Beispiel geschrieben!
https://www.herber.de/bbs/user/75591.xlsm
Gruß He
AW: Bildauswahl nach Listboxselection
05.07.2011 09:38:06
Rudi
Hallo,
nicht gerade trivial.
In ein Modul:
Option Explicit
'Code von Nepumuk  *********************************************************
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
ByRef PicDesc As PIC_DESC, _
ByRef RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, _
ByRef IPic As IPictureDisp) As Long
Private Declare Function CopyImage Lib "user32.dll" ( _
ByVal handle As Long, _
ByVal un1 As Long, _
ByVal n1 As Long, _
ByVal n2 As Long, _
ByVal un2 As Long) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" ( _
ByVal wFormat As Integer) As Long
Private Declare Function OpenClipboard Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Integer) As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Type PIC_DESC
lngSize As Long
lngType As Long
lnghPic As Long
lnghPal As Long
End Type
Private Const PICTYPE_BITMAP = 1
Private Const CF_BITMAP = 2
Private Const IMAGE_BITMAP = 0
Private Const LR_COPYRETURNORG = &H4
Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Function Paste_Picture() As IPictureDisp
Dim lngReturn As Long, lngCopy As Long, lngPointer As Long
Dim i As Long
If IsClipboardFormatAvailable(CF_BITMAP)  0 Then
lngReturn = OpenClipboard(FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption))
If lngReturn > 0 Then
lngPointer = GetClipboardData(CF_BITMAP)
lngCopy = CopyImage(lngPointer, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
Call CloseClipboard
If lngPointer  0 Then Set Paste_Picture = Create_Picture(lngCopy, 0&, CF_BITMAP)
End If
End If
End Function
Private Function Create_Picture( _
ByVal lnghPic As Long, _
ByVal lnghPal As Long, _
ByVal lngPicType As Long) As IPictureDisp
Dim udtPicInfo As PIC_DESC, udtID_IDispatch As GUID
Dim objPicture As IPictureDisp
With udtID_IDispatch
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
With udtPicInfo
.lngSize = Len(udtPicInfo)
.lngType = PICTYPE_BITMAP
.lnghPic = lnghPic
.lnghPal = lnghPal
End With
Call OleCreatePictureIndirect(udtPicInfo, udtID_IDispatch, 0&, objPicture)
Set Create_Picture = objPicture
End Function
Public Sub Show_Range(ImageControl As MSForms.Image)
Dim objPicture As IPictureDisp
Call EmptyClipboard
Set objPicture = Paste_Picture
If Not objPicture Is Nothing Then
ImageControl.Picture = objPicture
Else
ImageControl.Picture = LoadPicture("")
End If
End Sub

Im Modul der UF:
Private Sub Listbox1_Change()
If ListBox1.ListIndex > -1 Then
Tabelle2.Shapes(ListBox1).CopyPicture xlScreen, xlBitmap
Show_Range Image1
Else
Image1.Picture = LoadPicture("")
End If
End Sub
Private Sub UserForm_Initialize()
Dim oSh As Shape
For Each oSh In Tabelle2.Shapes
If oSh.Type = msoPicture Then
ListBox1.AddItem oSh.Name
End If
Next oSh
End Sub

Gruß
Rudi
Anzeige
AW: Bildauswahl nach Listboxselection
05.07.2011 10:05:41
Ludwig
Hallo Rudi
Wow! Es funktioniert!!!
Da gibt es nichts triviales dazu - da bin ich ja Stunden dran das zu verstehhen!
Tausend Dank!
Gruß Ludwig

70 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige