InsertFile FileName:= NN(Konstante/Variable)?!

Hallo, letzte Frage (dann weiss ich alles :smile:))
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! :frowning:
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 :smile:))

na, bin ja mal gespannt, dann wird’s hier ja langweilig :wink:)

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]