Hallo, letzte Frage (dann weiss ich alles
))
Eine Prozedur(„Standard“) soll an einer bestimmten Prozedurstelle eine von verschiedenen Dateien (vd-0001 bis vd-1000) einfügen.
Mein Versuch:
Auf Modulebene im Deklarationsabschnitt die Variable i deklariert:
Public i
und die Prozedur „Standard“ sollte dann arbeiten:
Sub Listbox1()_Click
Select Case Listbox1.ListIndex
Case 0
i = vd-0001
case 1
i = vd-0002
usw.
End Select
End Sub
Sub Standard()_Click
Mach´ alles mögliche…
Selection.InsertFile FileName:=i
Mach´ alles mögliche…
End Sub
Sie arbeitet aber nicht! 
Meldungsfenster: Befehl mißlungen - Laufzeitfehler 4198
Kurzversuch
Sub test()
Dim i
i = „vd-0001“
Selection.InsertFile FileName:=i
End Sub
läuft. Warum diese Ungerechtigkeit?
Gruß
Wilhelm
Hi,
kann es sein, daß du in Sub Listbox1_Click die „“ vergessen hast?
Kannst ja mal mit F8 schrittweise durchgehen, dann siehst du, wo der Fehler auftritt.
Ich würde anstatt „Case 0 :i = vd-0001 …“ auch einfach
i = „vd-“ & format(Listbox1.ListIndex,„0000“)
schreiben, dann sparst du dir 1000 case-Anweisungen.
Was willst du eigentlich mit „auf Modulebene“?
Schreib einfach die Variable ganz oben in deinen Code von deiner Form in den Allgemeinabschnitt.
sollte dann so aussehen:
Dim i 'kannst auch „Dim i as String“ schreiben
Sub Listbox1()_Click
i = „vd-“ & Format(Listbox1.ListIndex,„0000“)
End Sub
Sub Standard()_Click
'Mach´ alles mögliche…
Selection.InsertFile i
'Mach´ alles mögliche…
End Sub
Hoffe das tut so.
Gruß
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Wilhelm,
Hallo, letzte Frage (dann weiss ich alles
))
na, bin ja mal gespannt, dann wird’s hier ja langweilig
)
i = vd-0001
Wenn Du in i einen Dateinamen speichern willst, musst Du i auch als String deklarieren, hier ist i offenbar die Differenz aus der Variablen vd und 1. Das geht nicht, aber deshalb funktioniert auch
i = „vd-0001“
Selection.InsertFile FileName:=i
Am einfachsten erreichst Du Dein Ziel mit
Sub Listbox1()_Click
i = „vd-“ & Format(Listbox1.Listindex + 1, „0000“)
Selection.InsertFile FileName:=i
End Sub
So funktioniert’s. Die Listindex-Eigenschaft wird direkt in eine 4-stellige Zahl umgewandelt und an den Text „vd-“ angehängt, so dass in i dann „vd-0001“ etc. steht.
Viel Erfolg mit Deinem Projekt.
Gruß
Sculpture
Zusatz
Hi Wilhelm,
Die „+1“ in
i = „vd-“ & Format(Listbox1.Listindex + 1, „0000“)
brauchst Du, weil die Listindex-Eigenschaft ab 0 gezählt wird.
Gruß
Sculpture
Also gut, vorletzte Frage oder Rebus:
Zunächst: Als ich Eure Hilfen begrübelt habe, kam die Erleuchtung.
Ich hatte eine Prozedur in „Newe Makros“ geschrieben, sie wollte aber lieber zur Userform, prompt läufts prima.
Kann man Eure Lösungen mit der Formatumwandlung und der Listbox1.Listindex-Geschichte auch irgendwie zum Laufen motivieren, wenn meine Dateien nicht vd-0001 bis vd-1000 sondern vd-Meier, vd-Müller, vd-Scupture pp heißen?
Tschüs, ich fahre jetzt an die Nordsee.
Gruß
Wilhelm
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]