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

Linksklick auf Bild mit VBA

Forumthread: Linksklick auf Bild mit VBA

Linksklick auf Bild mit VBA
10.04.2022 05:55:40
oraculix
Hallo Alle!
In den Zellen A1:IZ1 sind Bilder.
Wenn die Bilder per linksklick geöffnet werden erscheint die Userform.
Weiters habe ich in einer anderen Tabelle eine suche die mich zu einer dieser Zellen A1:IZ1 bringt.
Aber wie kann ich das Bild dann per VBA anklicken?
Dieses Macro bringt mich zur richtigen Zelle.
'Sucht per Doppelklick in Spalte Wert

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngSuche As Range
Dim C As Range
If Not Intersect(Target, Range("C4:C300")) Is Nothing Then
Set C = Tabelle2.Range("C4:C300").Find(Target.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
Set rngSuche = Worksheets("Schauspieler").Columns("A:IZ").Find(Target.Value, LookAt:=xlPart)
Application.Goto Reference:=rngSuche
End If
Cancel = True
End If
'Ein Code fehlt  noch ein Linksklick auf das Bild
'Hier müsste noch das klicken auf das Bild in dieser gefundenen Zelle angeklickt werden, also
linksklick auf Bild simulieren per VBA.
End Sub
Gruß
Oraculix
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 09:51:03
sab
Hi Oraculix
Ich hab selber nicht so viel Ahnung, aber bis die Profis antworten vielleicht mal etwas zum weiter recherchieren/probieren:

Sub BildAktivieren()
Application.Run ActiveSheet.Shapes("nameDesBildes").OnAction
End Sub
Damit könntest du ein Makro ausführen, wenn du die Bezeichnung des Bildes kennst. Falls du es also schaffst, die Bezeichnung des gefundenen Bildes auszulesen, dann wäre es wohl auch möglich, das hinterlegte Makro auszuführen.
LG, sab
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 10:08:09
oraculix
Hallo und Danke aber der Name des Bildes ist nicht bekannt!
Nur der Zellenname wird ermittelt und markiert.
Dieses Bild zeigt die suche nach Schauspielern per Doppelklick und führt mich zur Fundstelle.
Userbild
Dies ist die Fundstelle die Zelle wird markiert aber das Bild sollte auch angeklickt werden!
Userbild
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 10:16:44
Beverly
Hi,
laufe in einer Schleife über alle Shapes und wenn die linke obere Ecke des laufenden Shapes auf der gefundenen Zelle liegt, dann hast du das richtige Bild gefunden.
Bis später
Karin

AW: Linksklick auf Bild mit VBA
10.04.2022 10:33:47
sab
Stimme Karin zu
Vielleicht irgendwie so?

Sub RunShapeMacro()
Dim shp As Shape, shpRng As Range, c As Integer, r As Range
Set r = Range("A1:D5") 'Hier die Adresse rein, welche das Resultat deiner Suche ist
With ActiveSheet
For Each shp In .shapes
Set shpRng = .Range(shp.TopLeftCell.Address, .Range(shp.BottomRightCell.Address))
If Not Intersect(shpRng, r) Is Nothing Then
Application.Run shp.OnAction
End If
Next shp
End With
End Sub
LG, sab
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 10:47:07
oraculix
Hallo sab Danke!
Aber ich bekomme einen Fehler !(Siehe Bild)
Userbild
Gruß
Oraculix
AW: Linksklick auf Bild mit VBA
10.04.2022 11:00:40
sab
Hm,
Sehe ich das richtig, dass du r deinen ganzen Suchbereich zuweist?
So wie ich es gemeint hatte, solltest du in die Range r nur das Resultat Deiner Suche packen, nicht den ganzen Suchbereich.
LG, sab
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 11:03:02
sab
Zu schnell abgeschickt...
Also wenn du z.B. Kevin Costner gesucht hat und sein Bild liegt in P1, dann sollte es heissen

Set r = Range("P1")

AW: Linksklick auf Bild mit VBA
10.04.2022 11:07:52
oraculix
Danke aber das mit Set r = Range("P1") verstehe ich nicht.
Da müsste ich ja von 260 Schauspielern die Position kennen und diese irgendwo deklarieren.
Gruß
Oraculix
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 11:19:59
sab
Vielleicht habe ich Deine Code falsch verstanden, aber ich dachte, dass dich

Set rngSuche = Worksheets("Schauspieler").Columns("A:IZ").Find(Target.Value, LookAt:=xlPart)
Application.Goto Reference:=rngSuche
Zu der gesuchten Zelle bringt? Also kennst du den Wert doch, denn er steht in rngSuche.
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 11:31:12
oraculix
Danke!
Abe wo soll ich dann Set r = Range("P1") einfügen ?
Könntest Du mir mal den ganzen Code Posten wie du Dir das vorstellst?
Ich kapier es einfach nicht.
Danke
Gruß
Oraculix
AW: Linksklick auf Bild mit VBA
10.04.2022 11:46:40
sab

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngSuche As Range
Dim C As Range
If Not Intersect(Target, Range("C4:C300")) Is Nothing Then
Set C = Tabelle2.Range("C4:C300").Find(Target.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
Set rngSuche = Worksheets("Schauspieler").Columns("A:IZ").Find(Target.Value, LookAt:=xlPart)
Application.Goto Reference:=rngSuche
End If
Cancel = True
End If
'Code für "Linksclick" aufrufen und rngSuche übergeben
Call RunShapeMacro(rngSuche)
End Sub
Private Sub RunShapeMacro(ByVal Suchresultat As Range)
Dim shp As Shape, shpRng As Range, c As Integer, r As Range
Set r = Suchresultat 'Hier landet die Adresse, welche das Resultat deiner Suche ist
With ActiveSheet
For Each shp In .shapes
Set shpRng = .Range(shp.TopLeftCell.Address, .Range(shp.BottomRightCell.Address))
If Not Intersect(shpRng, r) Is Nothing Then
Application.Run shp.OnAction
End If
Next shp
End With
End Sub

Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 14:04:59
oraculix
Hallo Denke es Funktioniert aber das Makro das für den linksklick auf das Bild zuständig ist
zeigt jetzt eine Fehlermeldung!
'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) 'Hier wird der Fehler angezeigt Gelb
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: Linksklick auf Bild mit VBA
10.04.2022 16:19:31
Nepumuk
Hallo,
teste mal:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim objCell As Range
Dim objShape As Shape
If Not Intersect(Target, Range("C4:C300")) Is Nothing Then
Set objCell = Tabelle2.Range("C4:C300").Find(Target.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not objCell Is Nothing Then
With Worksheets("Schauspieler")
Set objCell = .Rows(1).Find(Target.Value, LookAt:=xlPart)
If Not objCell Is Nothing Then
Application.Goto Reference:=objCell
For Each objShape In .Shapes
If objShape.TopLeftCell.Address = objCell.Address Then
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 = objShape.TopLeftCell.Text
Call .Show
End With
Set objShape = Nothing
Exit For
End If
Next
End If
End With
End If
Cancel = True
End If
End Sub
Gruß
Nepumuk
Anzeige
!!!!!!Nepomuk Genial Danke!!!!!!!!
10.04.2022 16:41:20
oraculix
Super Vielen Dank wenn ich Dich nicht hätte!
Funktioniert ohne Fehler!
Ps. Bin bei 1720 von 2711 Bildern müsste mal Vollgas geben aber ist halt mühsam.
Gruß
Oraculix
AW: Linksklick auf Bild mit VBA
10.04.2022 11:48:01
Beverly
Hi,
leider habe ich wieder einmal keine Benachrichtigungsmail bekommen, sodass ich erst jetzt antworten kann:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngSuche As Range
Dim C As Range
Dim shaBild As Shape
If Not Intersect(Target, Range("C4:C300")) Is Nothing Then
Set C = Tabelle2.Range("C4:C300").Find(Target.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then
Set rngSuche = Worksheets("Schauspieler").Columns("A:IZ").Find(Target.Value, LookAt:=xlPart)
Application.Goto Reference:=rngSuche
For Each shaBild In Worksheets("Schauspieler").Shapes
If shaBild.TopLeftCell.Address = rngSuche.Address Then
Application.Run shaBild.OnAction
End If
Next shaBild
End If
Cancel = True
End If
End Sub
Bis später
Karin

Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 12:10:27
oraculix
Hall Karin Danke!
Es dürfte funktionieren aber jetzt wird ein Fehler im Macro erzeugt der das Bild bei linksklick öffnet.
Userbild
Gruß
Oraculix
AW: Linksklick auf Bild mit VBA
10.04.2022 11:54:21
sab
Ich habe das Ganze mal versucht in deinen Code einzupflegen (siehe andere Antwort), aber evtl. muss man es noch etwas anpassen bzw. vielleicht liesse sich der Code auch noch vereinfachen (z.B. könnte man wohl das übergebene Argument direkt nutzen und ganz auf die Variable r verzichten).
Und was sicher auch noch rein müsste, wäre ein Error-Handling. Vielleicht hat da sonst noch wer ein paar Tipps.
Anyway... ich hoffe, das hat dir ein wenig weniger geholfen. Ansonsten müssen hier die Profis ran - ich hab ja selber nicht so viel Ahnung.
Viel Erfolg noch
LG, sab
Anzeige
AW: Linksklick auf Bild mit VBA
10.04.2022 10:38:19
oraculix
Hallo Karin Danke!
Wie mach ich das bin ja noch Anfänger.
1 to 300
if cell faund Than Value
Application.Run ActiveSheet.Shapes("ValueDesBildes").OnAction
So ungefähr stelle ich mir das vor
Gruß
Oraculix
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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