Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
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

Bitte um Hilfe bei Codezeile

Bitte um Hilfe bei Codezeile
Marco
Hallo liebes Forum,
ich verwende folgende Code-Zeilen:
1) Const imagePath As String = "C:\Users\Notebook\Images\" (im Code eines Blattes)
2) Const Path = "C:\Users\Notebook\Images\" (in einem Modul)
Mein Problem ist nun, dass sich dieser Pfad nach bestimmten Kriterien ändern muss, wobei es aktuell insgesamt 3 Möglichkeiten für den Pfad gibt.
Ich suche nun nach einer Lösung, das umzusetzen, bisher mit folgenden Lösungsansätzen:
- Möglichkeit A wäre, der Code steht in einer Zelle (z.B. in F4) und ändert sich dort per Formel.
- Möglichkeit B wäre, das Kriterium steht in einer Zelle (z.B. in F4 der Wert = 1, 2 oder 3) und die entsprechenden Pfade werden im Code definiert.
Kann mir jemand sagen, welche Möglichkeiten es hier gibt und wie ich sie umsetzen kann ?
Vielen Dank im Voraus für alle Tipps !!
VG,
Marco
AW: Bitte um Hilfe bei Codezeile
20.05.2012 13:39:42
Gerd
Hallo Marco,
nimm eine Variable statt einer Konstanten.
Dim strAktuellerPfad As String
strAktuellerPfad = Cells(4, 6).Value
Gruß Gerd
AW: Bitte um Hilfe bei Codezeile
20.05.2012 13:57:21
Marco
Hallo Gerd,
vielen Dank für die schnelle Antwort !
Im Modul scheint sich das ändern zu lassen, ändere ich es jedoch im Blattcode erhalte ich folgende Fehlermeldung:
Compile Error:
Invalid outside procedure
und der Debugger springt zu der 4 in Deinem Code.
Weisst Du, woran das liegen kann ? Gibt es hier noch einen anderen Weg ?
VG,
Marco
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:11:19
Reinhard
Hallo Marco,
Gerds Code ist okay. Bleibst du als Unbekannter Einfluß :-))
Zeige mal die kompletten Codes und/oder die mappe.
Gruß
Reinhard
Anzeige
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:11:23
Gerd
Hallo Marko,
strAktuellerPfad = Cells(4, 6).Value
Diese Codezeile muss in einer Prozedur (Makro) stehen.
Gruß Gerd
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:16:43
Reinhard
Hallo Gerd,
danke, alles klar, deshalb kannte ich die Fehlermeldung nicht, es liegt also so was vor:
Option Explicit
Dim strAktuellerPfad As String
strAktuellerPfad = Cells(4, 6).Value

bei meinem XL2007 kommt da die Fehlermeldung noch in Deutsch.
Gruß
Reinhard
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:21:37
Gerd
Hallo Reinhard,
bei mir auch in Deutsch, diese Meldung allerdings sehr selten. Da muss man echt grübeln. :-)
Gruß Gerd
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:39:26
Marco
Hallo Reinhard und Gerd,
Entschuldigung wegen der Fehlermeldung - ich wohne in Irland, daher wahrscheinlich der Text in Englisch. ;-)
Könnt Ihr mir trotzdem weiterhelfen ?
VG,
Marco
Anzeige
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:46:05
Reinhard
Hallo Marco,
du brauchst dich doch nicht entschuldigen. Gerd und ich haben uns nur ein bißchen über unsre Bachelor
Englischkenntnisse ausgetauscht *gg*
Außerdem sind wir dabei dir zu helfen.
Naja, ich erst wieder in so knapp 2h. Mich gelüstet nach Cafe au lait im Strassencafe und Leute glotzen, lästern :-)
Gruß
Reinhard
AW: Bitte um Hilfe bei Codezeile
20.05.2012 15:14:38
Marco
Hallo Gerd,
hier noch der komplette Codeteil des Tabellenblattes als Ergänzung - vielleicht hilft das ja weiter:
Option Explicit
Const imagePath As String = "C:\Users\Notebook\Bilder\"
'Image saving location
Const MaxWidth As Long = 471 'Maximum width for images
Const MaxHeight As Long = 500 'Maximum height for images
Const PosLeft As Long = 553 'Image location from left
Const PosTop As Long = 143 'Image location from top
Private objImg As Object
Dim mstrOld As String
Dim RaBereich As Range
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dblWidth As Double, dblHeight As Double
Dim strFile As String
Set RaBereich = Intersect(Range("E2"), Range(Target.Address))
If Not RaBereich Is Nothing Then
mstrOld = Range("E2")
End If
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"
If InStr(strFile, vbLf) > 0 Then
strFile = Left(strFile, InStr(strFile, vbLf) - 1)
End If
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
Die Funktion ist in einem Modul wie folgt abgelegt:
Option Explicit
Function Vorh(Zelle) As Boolean
Dim Z
Const Pfad = "C:\Users\Notebook\Desktop\My Documents\Bilder\"
Z = Replace(Zelle.Value, Chr(11), "")
Vorh = Dir(Pfad & Zelle & ".jpg") ""
End Function
'
VG und nochmals danke,
Marco
Anzeige
AW: Bitte um Hilfe bei Codezeile
20.05.2012 15:51:05
Marco
...und hier noch in einer Beispiel-Mappe...
https://www.herber.de/bbs/user/80230.xlsm
Die Bildtitel würden hier in Blatt3, Spalte C, der Pfad für die Bilder in Blatt3, Zelle F4 stehen.
VG,
Marco
AW: Bitte um Hilfe bei Codezeile
21.05.2012 13:02:51
Marco
Hallo Gerd,
den Teil im Modul konnte ich nun wie folgt abändern, womit diese Funktion bestens funktioniert - was nun noch fehlt, ist eine Anpassung des Codes im Tabellenblatt, da hier der gleiche Weg leider nicht funktioniert:
Option Explicit
Function Vorh(Zelle) As Boolean
Dim Z
Dim sPath As String
sPath = ActiveWorkbook.Worksheets(3).Range("L4").Value
Z = Replace(Zelle.Value, Chr(11), "")
Vorh = Dir(sPath & Zelle & ".jpg")  ""
End Function
Hast Du dazu vielleicht noch eine Idee ?
VG und vielen Dank im Voraus,
Marco
Anzeige
AW: Bitte um Hilfe bei Codezeile
22.05.2012 10:29:51
Marco
...ich poste noch einmal neu, da hier keine Rückmeldung.
VG,
Marco
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:27:14
Marco
Hallo Gerd,
vielen Dank nochmal !
In meinem Modul steht momentan folgender Code (noch mit dem zu ersetzenden Pfad):
Option Explicit
Function Vorh(Zelle) As Boolean
Dim Z
Const Pfad = "C:\Users\Notebook\Bilder\"
Z = Replace(Zelle.Value, Chr(11), "")
Vorh = Dir(Pfad & Zelle & ".jpg")  ""
End Function
In einem Tabellenblatt (Blatt3) steht vor dem eigentlichen Code:
Option Explicit
Const imagePath As String = "C:\Users\Notebook\Bilder\"
'Image saving location
Const MaxWidth As Long = 471 'Maximum width for images
Const MaxHeight As Long = 500 'Maximum height for images
Const PosLeft As Long = 553 'Image location from left
Const PosTop As Long = 143 'Image location from top
Private objImg As Object
Dim mstrOld As String
Dim RaBereich As Range
Hilft das weiter ? Kannst Du mir sagen, wo ich hier etwas ändern muss, damit es funktioniert ?
Der Pfad steht momentan auf Blatt3 in Zelle F4.
VG,
Marco
Anzeige
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:37:24
Reinhard
Hallo Marco,
das was du vom Tabellenblatt zeigst ergibt keinen Fehler.
Würde großen Sinn machen du zeigst uns mehr.
Gruß
Reinhard
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:50:11
Marco
Hallo Reinhard,
was ich gemacht habe, ist, die beiden Zeilen mit dem Pfad jeweils durch den Code von Gerd zu ersetzen und dann erhalte ich die Fehlermeldung.
Kann es sein, dass ich in Gerds Code noch das Blatt definieren muss, auf dem der Code in F4 steht ?
VG,
Marco
AW: Bitte um Hilfe bei Codezeile
20.05.2012 14:55:31
Reinhard
Hallo Marco,
erzähl mir bitte nicht was du getan hast, zeige es mir bitte.
Ich erbitte letztmalig die Mappe.
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige