Autor
|
Thema: Bild in Excel Zelle, Abhängig von einem Wert (2542 / mal gelesen)
|
Tammy89 Mitglied
Beiträge: 24 Registriert: 28.07.2016 Microsoft Office 2010 Windows 7
|
erstellt am: 28. Jul. 2016 16:18 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, seit zwei Tagen durchforste ich nun dieses Forum und bin nicht wirklich auf die Lösung gestoßen, die mir weiter helfen könnte. Ich hab noch nicht so viel mit VBA gearbeitet und helfe mir momentan noch mit Tipps aus dem Ineternet. Ich habe Problem, wo ich nicht weiter kommen: Ich habe eine Tabelle, in der ich im Feld C6 einen Wert eingebe. Immer dann, wenn hier ein Wert drin steht, soll ein Bild in einer Zelle angezeigt werden. Ich möchste das Bild nicht mit Windows öffnen, sondern nur in Excel "einfügen" Dateipfad ist immer der gleiche + der Wert aus Feld C6 als Dateiname Wie kann ich sowas mit einem Makro lösen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 28. Jul. 2016 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für Tammy89
|
Tammy89 Mitglied
Beiträge: 24 Registriert: 28.07.2016 Microsoft Office 2010 Windows 7
|
erstellt am: 29. Jul. 2016 10:12 <-- editieren / zitieren --> Unities abgeben:
Hallo rumkelruebe, vielen Dank für den Hinweis. Leider habe ich die letzten Tage auch diese beiden Themen angeschaut, doch in dem einen habe ich vermutlich das elementare Problem, dass ich das Beispiel von Nepomuk nicht öffnen kann :-( Vielleicht kann man ja jemand helfen, dieses Problem zu lösen :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 29. Jul. 2016 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für Tammy89
Moin, dann hast Du womöglich die Anzeige bekannter Dateiendungen im WIN-Explorer ausgeschaltet? Ganz blöde default-Einstellung von Microsoft. Das gehört zu den ersten Dingen, die man umstellt Nepumuk hat am 21. Jun. 2007 18:55 eine *.zip.txt hochgeladen. Die habe ich soeben selber zum Test runtergeladen und kann sie problemlos entzippen, sobald ich sie umbenannt habe (das .txt am Ende löschen). Versuch es nicht beim Download umzustellen, das ging schon oft ins berühmte Beinkleid. Lieber so runterladen, wie es kommt und dann umbenennen. In den anderen Beiträgen sind ja aber auch noch genug Ansätze vorhanden, die Du umsetzen kannst. Unter anderem hat Thomas Harmening ein paar Einträge weiter unten auf Basis der Nepumuk-Mappe etwas Modifiziertes hochgeladen... Also: Ran! PS: Deine Anforderung Zitat: Ich habe eine Tabelle, in der ich im Feld C6 einen Wert eingebe. Immer dann, wenn hier ein Wert drin steht, soll ein Bild in einer Zelle angezeigt werden. Ich möchste das Bild nicht mit Windows öffnen, sondern nur in Excel "einfügen" Dateipfad ist immer der gleiche + der Wert aus Feld C6 als Dateiname
entspricht imho auch ziemlich genau >> diesem << ich erwähnte bereits, dass die threads lang sind ;-) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tammy89 Mitglied
Beiträge: 24 Registriert: 28.07.2016 Microsoft Office 2010 Windows 7
|
erstellt am: 03. Aug. 2016 10:18 <-- editieren / zitieren --> Unities abgeben:
Hallo runkelruebe, vielen Dank, für den Hinweis. Funktioniert super. Habe nur noch ein Problem :-( Ich lasse das Bild anzeigen, wenn sich die Zelle C6 ändert. Wird die Zelle aber gelöscht, so bekomme ich einen Fehler, da es dann wohl keinen Pfad gibt (?) Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim strPfad7$ 'Sobald C6 (Artikel) geändert wird If Not Intersect(Target, Range("C6")) Is Nothing Then 'Bildpfad setzen strPfad7 = "P:\...\00_Bilder\" & ActiveSheet.Range("C6").Value & ".jpg" 'Zelle auswählen, in welches das Bild eingefügt werden soll ActiveSheet.Range("L8").Select 'MsgBox strPath7 'Bild einfügen ActiveSheet.Pictures.Insert (strPfad7) ActiveSheet.Pictures.Width = 200 ActiveSheet.Pictures.Height = 200 End If End Sub Ich habe es auch schon mit einer zusätzlichen If-Schleife versucht, aber so funktioniert dann gar nichts mehr :-( Private Sub Worksheet_Change(ByVal Target As Range) Dim strPfad7$ 'Sobald C6 (Artikel) geändert wird If Not Intersect(Target, Range("C6")) Is Nothing Then 'Bildpfad setzen strPfad7 = "P:\...\00_Bilder\" & ActiveSheet.Range("C6").Value & ".jpg" If Not IsEmpty(strPfad7) Then 'Zelle auswählen, in welches das Bild eingefügt werden soll ActiveSheet.Range("L8").Select 'MsgBox strPath7 'Bild einfügen ActiveSheet.Pictures.Insert (strPfad7) ActiveSheet.Pictures.Width = 200 ActiveSheet.Pictures.Height = 200 End If End If End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 03. Aug. 2016 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tammy89
Moin, ich hab mal einfach ein paar Dinge in Deinen Code kommentiert, ich hoffe, sie helfen Dir weiter. Ich würde z.B. die bereits eingefügten Bilder vor erneuter Codeausführung löschen, sonst hast Du irgendwann siebenunddrölfzig Bilder übereinander... Da ich nicht weiß, wieviele Bilder Du hast, gehe ich mal vom einfachsten Fall aus: NUR das eine Bild, was Du selber eingefügt hast. Die Radikalkur (ActiveSheet.DrawingObjects.Delete ) schmeißt u.U. zuviel raus, aber das mußt DU jetzt prüfen, wie es Dir am besten in den Kram paßt. Den kleine-Hände-Error-Handler (resume next) würde ich rein nehmen, wir wollen es ja nicht unnötig verkomplizieren. An Falscheingaben hast Du in Deinem Szenario nämlich noch gar nicht gedacht Daher wurde in dem anderen thread eine Gültigkeitsprüfung mit Listen-Quelle empfohlen, die kann sowas ganz ohne VBA abfangen. Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim strPfad7$ On Error Resume Next 'UNSAUBER! aber für kleine Hände tut's ;-) Ansonsten knallt es womöglich schon in der nächsten Zeile 'Bild vor neuer Ausführung löschen: ActiveSheet.Shapes(1).Delete '>> Index prüfen, falls Du mehr als dieses eine Bild in Deiner Tabelle hast 'Sobald C6 (Artikel) geändert wird If Not Intersect(Target, Range("C6")) Is Nothing Then
'ENTWEDER wenn C6 leer ist, Prozedur verlassen 'If Range("C6").Value = "" Then Exit Sub 'ODER 'wenn C6 leer ist, dummy-Pfad befüllen, damit ein Bild mit Hinweis "Bildnamen in C6 angeben!" eingefügt wird If Range("C6").Value = "" Then strPfad7 = "P:\...\00_Bilder\DUMMY.jpg" Else strPfad7 = "P:\...\00_Bilder\" & ActiveSheet.Range("C6").Value & ".jpg" End If 'Zelle auswählen, in welches das Bild eingefügt werden soll ActiveSheet.Range("L8").Select 'MsgBox strPath7 'Bild einfügen ActiveSheet.Pictures.Insert (strPfad7) ActiveSheet.Pictures.Width = 200 ActiveSheet.Pictures.Height = 200 End If End Sub
HTH ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tammy89 Mitglied
Beiträge: 24 Registriert: 28.07.2016 Microsoft Office 2010 Windows 7
|
erstellt am: 03. Aug. 2016 12:00 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|