Anzeige
Archiv - Navigation
1896to1900
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
Bild einblenden bei klick in erste Zeile
07.09.2022 16:04:34
Oraculix
Hallo Ihr Experten!
In meiner Tabelle habe ich in Zeile 1 Schauspielernamen. Zeile A1:IZ1
Ich möchte gerne ein Bild des Schauspielers einblenden wenn ich auf seinen Namen kilcke.
Geht das überhaupt? Wenn ja wie mit VBA?
Das Verzeichniss der Bilder: D:\EMDB\HTML\Schauspieler Bilder
Zeile: A1:IZ1
Danke
Arbeitsmappe:(Abgespeckt)
https://www.herber.de/bbs/user/155038.xlsm
Gruß
Oraculix

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild einblenden bei klick in erste Zeile
07.09.2022 16:12:41
Mister
Hallo,
du kannst auch Bilder in Kommentare einfügen.
Gruß
Martin
AW: Bild einblenden bei klick in erste Zeile
07.09.2022 16:22:52
Oraculix
Danke!
Aber das geht nicht weil ich einen VBA Code habe der mir dann beim klick auf das Bild die Userform öffnet,dieser muss in zeile1 sein
gruß
Oraculix
AW: Bild einblenden bei klick in erste Zeile
07.09.2022 16:55:39
Beverly
Hi,
und wo ist dein Code und das UserForm? Das kannst du doch auch nutzen, um das Bild anzuzeigen. Es stellt sich auch die Frage, wie die Bilder genau heißen und wie man das aus dem derzeitigen Inhalt in Zeile 1 erfahren kann.
Bis später
Karin

AW: Bild einblenden bei klick in erste Zeile
07.09.2022 17:06:33
Oraculix
Hallo Danke für die Antwort!
Die Bilder haben genau den gleichen Namen der in den Zellen A1:IZ1 steht.
Beispiel : A1 Liam Neeson liegt im Verzeichniss D:\EMDB\HTML\Schauspieler Bilder\Liam Neeson.jpg
Also der Name des Bildes liegt immer in der ersten Zeile
Der Code zum öffnen der Userform:
'Klick auf beliebige Zeile 1 Schauspielerbild öffnet Userform3 und zeigt Bild in Userform an

Public Sub ImageClick2()
Dim objShape As Shape
Worksheets("Schauspieler").Activate
Set objShape = ActiveSheet.Shapes(Application.Caller)
With UserForm3
Set .Image21.Picture = GetPicture(objShape)
.ListBox1.List = Range(Cells(2, objShape.TopLeftCell.Column), _
Cells(Rows.Count, objShape.TopLeftCell.Column).End(xlUp)).Value
.ComboBox1.Text = Cells(1, objShape.TopLeftCell.Column).Text
Call .Show
End With
Set objShape = Nothing
End Sub
Gruß
Oraculix
Anzeige
AW: Bild einblenden bei klick in erste Zeile
07.09.2022 17:16:42
Beverly
Und wo ist das Problem? Was hat es mit der Public Sub ImageClick2() auf sich? Ist deine Frage so zu verstehen, dass jetzt anstelle eines Klick auf ein Image der selbe Code ausgeführt werden soll wenn ein Klick in Zeile 1 erfolgt?
Bis später
Karin

AW: Bild einblenden bei klick in erste Zeile
07.09.2022 17:26:55
Oraculix
Danke!
Ganz einfach in Zelle A1 soll mit linker Maus geklickt werden und der name der Zelle ist der Value zum suchen im Verzeichniss und das Bild soll in diese Zelle wo ich geklickt habe also A1 eingefügt werden. Wenn ich zb. auf B1 klicke soll das Bild aus A1 verschwinden
und das Bild aus B1 angezeigt werden in B1.
Siehe neue Arbeits mappe mit Bild
https://www.herber.de/bbs/user/155039.xlsm
Gruß
Oraculix
Anzeige
AW: Bild einblenden bei klick in erste Zeile
07.09.2022 18:08:38
Beverly
Also das ist aber jetzt etwas völlig anderes als das, was ich aus deinem Eröffnungsbeitrag interpretiert hätte...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strBild As String
Dim strPfad As String
Dim intNum As Integer
Dim shaBild As Shape
strPfad = "E:\Z_Test\"  ' 0 Then
strBild = Trim(Left(Target.Cells(1).Value, intNum - 1))
If Dir(strPfad & strBild & ".jpg")  "" Then
ActiveSheet.Pictures.Insert (strPfad & strBild & ".jpg")
Set shaBild = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With shaBild
.LockAspectRatio = msoFalse
.Left = Target.Cells(1).Left
.Top = Target.Cells(1).Top
.Width = Target.Cells(1).Width
.Height = Target.Cells(1).Height
End With
End If
End If
End If
End Sub
Bis später
Karin

Anzeige
AW: Geniale Karin Danke!
07.09.2022 18:26:21
Oraculix
Wauw echt Super Karin Vielen Dank!!
Aber wie kann ich jetzt dem Bild das erscheint das Macro automatisch zuweisen ?
'Klick auf beliebige Zeile 1 Schauspielerbild öffnet Userform3 und zeigt Bild in Userform an

Public Sub ImageClick2()
Dim objShape As Shape
Worksheets("Schauspieler").Activate
Set objShape = ActiveSheet.Shapes(Application.Caller)
With UserForm3
Set .Image21.Picture = GetPicture(objShape)
.ListBox1.List = Range(Cells(2, objShape.TopLeftCell.Column), _
Cells(Rows.Count, objShape.TopLeftCell.Column).End(xlUp)).Value
.ComboBox1.Text = Cells(1, objShape.TopLeftCell.Column).Text
Call .Show
End With
Set objShape = Nothing
End Sub
Gruß
Oraculix
Anzeige
AW: Geniale Karin Danke!
07.09.2022 18:34:16
Beverly
Ein Makro weist man der Eigenschaft OnAction des Shapes zu - in deinem Fall also:

                With shaBild
.LockAspectRatio = msoFalse
.Left = Target.Cells(1).Left
.Top = Target.Cells(1).Top
.Width = Target.Cells(1).Width
.Height = Target.Cells(1).Height
.OnAction = "HierDerMakroname"  '
Bis später
Karin

AW: Geniale Karin Danke!
07.09.2022 18:56:58
Oraculix
Vielen Dank es Funktioniert !
Nur bekomme ich jetzt mit einem anderen Code aus Userform folgenden Fehler!
Laufzeitfehler '424': Objekt erforderlich
Diese Zeile wird Gelb markiert (Das Bild aus Deinem Genialen Makro wird in der Userfom auch Eingeblendet)
Set Image21.Picture = ShowPicture(Tabelle3, lnGPolumn)
Hier Der Gesamte Code wo der Fehler Auftritt.
'Füllt Schauspielerliste in Userform3 Combobox1

Private Sub ComboBox1_Change()
Dim objCell As Range
Dim lngRow As Long, lnGPolumn As Long
If ComboBox1.ListIndex >= 0 Then
Set objCell = Tabelle3.Rows(1).Find(What:=ComboBox1.Text, _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Not objCell Is Nothing Then
lnGPolumn = objCell.Column
ListBox1.Clear
With Tabelle3
For lngRow = 2 To .Cells(.Rows.Count, lnGPolumn).End(xlUp).Row
ListBox1.AddItem .Cells(lngRow, lnGPolumn).Value
Next
End With
Set Image21.Picture = ShowPicture(Tabelle3, lnGPolumn)
Set objCell = Nothing
End If
End If
ListBox1.ListIndex = 0
End Sub
Gruß
Oraculix
Anzeige
Was willst du mit deinem Code...
07.09.2022 19:09:00
Beverly
...erreichen? Soll damit das Bild aus dem Tabellenblatt ins UserForm übernommen werden? Am einfachsten holst du das Bild aus dem Dateipfad und nicht aus dem Tabellenblatt.
Bis später
Karin

AW: Was willst du mit deinem Code...
07.09.2022 19:22:00
Oraculix
Danke für Deine Mühe.
Ja das Bild soll in die Userform übernommen werden.
Wie mach ich das aus dem dateipfad Übernehmen?
hier ein Bild der Userform!
Userbild
Gruß
Oraculix
AW: Was willst du mit deinem Code...
07.09.2022 19:36:51
Beverly
Der Dateipfad und Bildname sind dir ja bekannt. Ein Bild lädt man vom Prinzip her auf diesem Weg in ein Image auf einem UserForm:

UserForm1.Image1.Picture = LoadPicture(Pfadname & Bildname)
Bis später
Karin

Anzeige
AW: Was willst du mit deinem Code...
07.09.2022 19:45:59
Oraculix
Danke!
Leider geht das nicht ich kann ja nicht 260 Bildernamen schreiben!
Der Value muß aus dem klick erfolgen.
Damit funktioniert das ganze nicht.
Ich habe ja alle Bilder drinen 260 Stück aber wollte die Mappe etwas abspecken da sie 40mb hat mit allen Bildern.
Deshalb immer nur einzeln einblenden.
Besser Wäre wahrscheinlich alle bilder vor dem Speichern löschen und beim Starten der Mappe alle Einfügen.
Gruß
Oraculix
AW: Was willst du mit deinem Code...
07.09.2022 23:41:40
Beverly
Wozu alle Bilder in der Mappe liegen haben, wenn du sie doch eben immer wieder neu reinladen kannst. Ich verstehe dein Problem nicht - der Code mit dem Klick in Zeile 1 funktioniert doch. Und anschließend soll dasselbe Bild im UserForm angezeigt werden - oder? Wenn du den Bildnamen auf eine Publik-Vaiable schreibst, kannst du es doch mit dem von mir im vorhergehenden Beitrag geposteten Code ins UserForm laden - oder habe ich deine Frage falsch verstanden? Falls dem so ist, dann beschreibe doch mal ganz genau, was du eigentlich erreichen willst.
Bis später
Karin

Anzeige
AW: Was willst du mit deinem Code...
08.09.2022 00:54:36
Oraculix
Hallo Danke für Deine Mühe!
Dein Code funktioniert Tadellos nur wenn ich die Userform aufrufe bekomme viele Fehler sehr komplex das ganze.(Sämtliche Code müssten dann umgeschrieben werden)
Ich muss das anders lösen.
Arbeite gerade an einer neuen Variante wo beim speichern der Mappe alle 260 Bilder gelöscht werden.(Damit bringe ich Mappe auf 16 Mb runter)
Das löschen klappt ja schon ganz gut aber das einfügen beim Start der Mappe da gibt es noch Probleme.

Sub SchauspielerBilderLöschen()
'Alle Bilder Löschen
Application.ScreenUpdating = False
Windows("!Filme.xlsm").Activate
On Error GoTo Error:
Worksheets("Schauspieler").Activate
Dim BC As Object
For Each BC In ActiveSheet.Pictures
BC.Delete
Next BC
'Grundbild für Azeige wiederherstellen(Leider wird das  Image 1 auch gelöscht)
ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=231.574675324675, Top:=135.876623376623, _
Width:=325.081168831169, Height:=153.409090909091).Select
Error:
'Application.DisplayAlert = False
Range("A1").Select
Application.ScreenUpdating = True
End Sub

'Schauspieler bilder einfügen beim Start der Mappe

Sub SchauspielerBilderEinfügen()
'Mappe Öffnen
Workbooks.Open "D:\EMDB\HTML\Schauspieler_Bilder.xlsm"
'Kopieren
Windows("Schauspieler_Bilder.xlsm").Activate
ActiveSheet.Shapes.Range(Array("Picture 2")).Select
ActiveSheet.Shapes.SelectAll
Selection.Copy
Windows("!Filme.xlsm").Activate
'Einfügen
Windows("!Filme.xlsm").Activate
Worksheets("Schauspieler").Activate
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.Buttons.Add(67267.6071428571, 103.5, 414.321428571429, _
23.1428571428571).Select
' ActiveSheet.Shapes("Picture 264").IncrementLeft 25.2029133858
Range("A1").Select
'Schauspieler bilder schließen
Windows("Schauspieler_Bilder.xlsm").Activate
Worksheets("SchauspielerBilder").Activate
ActiveWorkbook.Close 'SaveChanges:=False
Error:
'Application.DisplayAlert = False
Application.ScreenUpdating = True
End Sub
Gruß
Oraculix
Anzeige
Letzter Versuch...
08.09.2022 10:19:46
Beverly
Also ich bekomme keinerlei Laufzeitfehler in meiner Mappe - aber ich kenne weder dein UserForm noch den betreffenden Code (aus deinem Screenshot kann man dazu logischerweise nichts entnehmen), sodass ich nichts dazu sagen kann.
Den Bildnamen kannst du doch völlig problemlos aus dem Inhalt der Zelle auslesen, auf dem das Bild liegt. Der Code sieht auch nicht anders aus als der bei Klick in die Zelle, um das Bild in die Mappe zu holen, nur dass du nicht mit Target arbeiten kannst sondern TopLeftCell des Bildes als Zellbezug verwenden musst. Schau dir den Code im Standardmodul an.
Achtung: nicht vergessen, den im Modul definierten Pfadnamen an deinen anzupassen!!
https://www.herber.de/bbs/user/155051.xlsm
Bis später
Karin

Anzeige
Erledigt
08.09.2022 10:41:59
Oraculix
Danke Karin Du bist echt Super! Für die Mühe und Deine Geduld.
Ich habe einen neuen Beitrag eröffnet ich muß es anders machen das Macro ist schon Fertig und Funktioniert auch nur gehört es noch verkürzt.
Schau mal meinen neuen Beitrag an das istt für Dich sicherr ein leichtes Spiel den Code zu beschleunigen bzw. zu verkürzen.
Gruß
Oraculix

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige