Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1256to1260
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

Fehler im Code - Bilder löschen

Fehler im Code - Bilder löschen
Jenny
Hi Ihr,
ich habe den folgenden Code mit Hilfe vom Forum (an dickes Dankeschön an Sepp) hier erstellt und die letzten Tage klappte auch alles gut, d.h. das entsprechende Bild wurde angeklickt, wenn man auf einen Titel in Spalte C geklickt hat und ein Bild mit gleichem Titel abgespeichert war.
Soweit, so gut und auch die Message Box erscheint korrekt, wenn man auf einen Titel in Spalte C klickt, zu dem kein Bild gespeichert ist.
Was jetzt plötzlich nicht mehr klappt, ist, dass ein zuvor angezeigtes Bild automatisch wieder verschwindet, wenn man irgendwo außerhalb von Spalte C klickt.
Habe ich hier einen Fehler im Code oder kann es sein, dass diese Funktion von einer anderen gestört wird ?
Code neu:
Option Explicit
Const imagePath As String = "C:\Users\Notebook\Desktop\My Documents\Bilder\" 'Image saving location
Const MaxWidth As Long = 270 'Maximum width for images
Const MaxHeight As Long = 210 'Maximum height for images
Const PosLeft As Long = 685 'Image location from left
Const PosTop As Long = 137 'Image location from top
Private objImg As Object
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Action 1: displays matching image when clicking on corresponding entry in column C
' Action 2: deletes displayed image if mouse click elsewhere than column C
Dim dblWidth As Double, dblHeight As Double
Dim strFile As String
If Not objImg Is Nothing Then objImg.Visible = False
DoEvents
If Target.Column = 3 And Target.Count = 1 Then
If Target  "" Then
strFile = imagePath & IIf(Right(imagePath, 1)  "\", "\", "") & Target.Value & ".jpg"
strFile = Replace(Replace(strFile, vbLf, ""), vbCrLf, "")
If Dir(strFile)  "" Then
On Error Resume Next
If objImg Is Nothing Then Set objImg = Me.OLEObjects("imageContainer")
On Error GoTo 0
If objImg Is Nothing Then createImageContainer
With objImg
.Object.AutoSize = True
.Object.Picture = LoadPicture(strFile)
.Top = ActiveWindow.VisibleRange.Top + PosTop
.Left = PosLeft
If .Height > MaxHeight Or .Width > MaxWidth Then
.Object.AutoSize = False
dblWidth = MaxWidth / .Width
dblHeight = MaxHeight / .Height
If dblWidth 
Private Sub createImageContainer()
Set objImg = Me.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=0, Top:=0, Width:=0, Height:=0)
With objImg
.Visible = False
.Object.PictureSizeMode = 1
.Name = "imageContainer"
End With
End Sub
Hoffe, Ihr könnt mir weiterhelfen ! :-)
LG und vielen Dank Euch im Voraus,
Jenny
AW: Fehler im Code - Bilder löschen
27.03.2012 13:51:08
fcs
Hallo Jenny,
das Problem sollte nur auftreten, wenn die Datei mit angezeigtem Bild gespeichert und geschlossen wird, d.h, wenn der Cursor in Spalte C auf einem Bild-Dateinamen steht.
Wenn man einmal in eine andere Spalte als Klick und dann wieder auf eine Bilddatei, dann sollte das Ein-/Ausblenden wieder funktionieren.
Wenn du dieses Phämen vermeiden willst, den Code am Ende der Hauptprozedur wie folgt ergänzen:
  Else
If Not objImg Is Nothing Then
objImg.Visible = False
Else
For Each objImg In Me.OLEObjects
If objImg.Name = "imageContainer" Then objImg.Visible = False: Exit For
Next
End If
End If
End Sub

Gruß
Franz
Anzeige
AW: Fehler im Code - Bilder löschen
27.03.2012 15:12:26
Jenny
Hallo Franz,
vielen Dank für den tollen Tipp ! :-)
Ich habe beim ergänzen des Codes wohl etwas falsch gemacht, da ich so eine Fehlermeldung in VBA erhalte.
Kannst Du mir genau sagen, wo ich ihn einfügen und was ich ggf. ändern oder löschen muss ?
LG und nochmals vielen Dank,
Jenny
AW: Fehler im Code - Bilder löschen
27.03.2012 18:31:11
Jenny
Hallo Franz,
nur um das noch zu ergänzen - und für den Fall, dass jemand anderes weiterhelfen kann - ich suche hier nur nach einer kurzen Codeerweiterung, mit der das jeweils durch den Code angezeigte Bild wieder ausgeblendet wird, sobald man irgendwo anders als in Spalte C klickt. :-)
Bin Euch für jeden Tipp dankbar !!
LG,
Jenny
Anzeige
AW: Fehler im Code - Bilder löschen
27.03.2012 20:29:12
fcs
Hallo Jenny,
dann hier noch einmal der gesamte Code des Tabellenmoduls. Der angepasste Abschnitt ist markiert.
Gruß
Franz
Option Explicit
Const imagePath As String = "C:\Users\Notebook\Desktop\My Documents\Bilder\" 'Image saving  _
location
Const MaxWidth As Long = 270 'Maximum width for images
Const MaxHeight As Long = 210 'Maximum height for images
Const PosLeft As Long = 685 'Image location from left
Const PosTop As Long = 137 'Image location from top
Private objImg As Object
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Action 1: displays matching image when clicking on corresponding entry in column C
' Action 2: deletes displayed image if mouse click elsewhere than column C
Dim dblWidth As Double, dblHeight As Double
Dim strFile As String
If Not objImg Is Nothing Then objImg.Visible = False
DoEvents
If Target.Column = 3 And Target.Count = 1 Then
If Target  "" Then
strFile = imagePath & IIf(Right(imagePath, 1)  "\", "\", "") & Target.Value & ".jpg"
strFile = Replace(Replace(strFile, vbLf, ""), vbCrLf, "")
If Dir(strFile)  "" Then
On Error Resume Next
If objImg Is Nothing Then Set objImg = Me.OLEObjects("imageContainer")
On Error GoTo 0
If objImg Is Nothing Then createImageContainer
With objImg
.Object.AutoSize = True
.Object.Picture = LoadPicture(strFile)
.Top = ActiveWindow.VisibleRange.Top + PosTop
.Left = PosLeft
If .Height > MaxHeight Or .Width > MaxWidth Then
.Object.AutoSize = False
dblWidth = MaxWidth / .Width
dblHeight = MaxHeight / .Height
If dblWidth 

Anzeige
AW: Fehler im Code - Bilder löschen
27.03.2012 20:36:02
Jenny
Hallo Franz,
das ist klasse und klappt super - vielen vielen Dank !! :-)
Tut mir leid, ich hatte beim Kopieren wohl irgendwas falsch gemacht.
Ich habe noch eine letzte Frage zu den Bildern:
Die erscheinen sobald sie angezeigt werden leicht unscharf bzw. verschwommen.
Klickt man jedoch mit der Maus auf das angezeigte Bild und hält die Maustaste gedrückt, werden sie scharf.
Kann man die Schärfe der Bilder irgendwie bereits beim Anzeigen verbessern oder zumindest so lassen, wie sie eigentlich ist ?
LG
Jenny
AW: Fehler im Code - Bilder löschen
27.03.2012 21:48:03
fcs
Hallo Jenny,
für das Problem mit der Bildschärfe hab ich leider keine Lösung gefunden.
Ich lass die Frage deshalb offen, Evtl. hat ja noch jemand einen Geistesblitz.
Gruß
Franz
Anzeige
AW: Fehler im Code - Bilder löschen
27.03.2012 22:04:15
Jenny
Hallo Franz,
das ist nicht so schlimm - alles andere war eine riesen Hilfe ! :-)
LG und Dir noch einen schönen Abend,
Jenny
AW: Fehler im Code - Bilder löschen
28.03.2012 13:39:22
Jenny
Hallo Franz,
ich habs selber rausgefunden - jetzt klappt alles bestens ! :-)
LG und nochmals vielen Dank für all die Hilfe - einen schönen Tag noch,
Jenny

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige