AW: Grafik in Abhängigkeit einer Zelleingabe einfügen
15.07.2004 11:48:12
ANdreas
Hallo Heike,
sorry das ich erst jetzt wieder antworte - ich hoffe Du liest das noch.
Also Du legst Dir ein neues Tabellenblatt "Bildverzeichnis" an. Dort trägst Du in Spalte A sämtliche Nummern ein die im Eingabetabellenblatt eingetragen werden können! Neben der Nummer gibst Du den kompletten Pfad (z.B. C:\Temp\hund1.jpg) zum Bild an.
So dann kehrst Du zu Deinem Eingabeblatt zurück, klickst dort mit der rechten Maustaste im Blattregister auf die Tabelle, dann auf Code anzeigen. Dort trägst Du dann folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Static pctAlt As Object, pct As Object
Dim blnBildGefunden As Boolean, r
'Begrenzen der Eingabe der Nummer auf Spalte A + Nr. eingetragen
If Target.Column = 1 And Not IsEmpty(Target) And IsNumeric(Target.Value) Then
'Suche eingetragene Nr. im Tabellenblatt "Bildverzeichnis" Spalte A
Set r = Worksheets("Bildverzeichnis").Columns(1).Find(Target.Value, _
LookIn:=xlValues, LookAt:=xlWhole)
'Wenn eingegebene Nr. im Bildverzeichnis gefunden
On Error GoTo ErrorHandler
If Not r Is Nothing Then
blnBildGefunden = False
'Bild einfügen (Pfad aus Bildverzeichnis)
Set pct = ActiveSheet.Pictures.Insert(r.Offset(0, 1).Text)
blnBildGefunden = True
End If
'vorheriges Bild löschen
If Not pctAlt Is Nothing Then pctAlt.Delete
'neues Bild merken
Set pctAlt = pct
On Error GoTo 0
End If
Exit Sub
ErrorHandler:
Select Case Err.Number
'Tritt auf wenn 1. Falscher Pfad zum Bild
'2. Altes Bild wurde bereits manuell gelöscht
Case 1004
If Not blnBildGefunden Then
MsgBox "Grafik nicht gefunden für Nr. " & Target.Text, vbCritical
'Fahre mit nächster Anweisung nach Fehler fort -> Altes Bild löschen!
Resume Next
Else
'Bild wurde manuell gelöscht, trotzdem neues Bild merken
Set pctAlt = pct
End If
Case Else
MsgBox Err.Description, , "Fehler: " & Err.Number
End Select
End Sub
So wenn Du nun im Eingabeblatt in A1 zum Beispiel eine 1 einträgst, wird die Nr. 1 im Bildverzeichnis-Tabellenblatt in Spalte A gesucht. Wenn die Nr. gefunden wird, wird der Pfad aus Spalte B genommen und das Bild wird im Eingabetabellenblatt eingefügt!
Hoffe das hilft weiter,
Andreas