Jag försöker att så långt som möjligt återanvända kod.
En listbox är fylld med filnamn, när man klicka på den så skall via en sub, resultatet skrivas in i Text1.(borde vara enkelt, men jag missar någonstans)
Här vill jag alltså ha med mig två agrument, sökväg och vart till.
(har kollat via msgbox och jag har sökvägen med mig.)
Sen till subben, som jag har lagt i en modul:
Sub OppnaFilTillTextRuta(inFil, utFil)
Dim f As Integer, FileName As String
FileName = inFil 'App.Path & "\test.txt"
f = FreeFile
If Dir(FileName) <> "" Then
Open FileName For Input As f
utFil = Input(LOF(f), f)
Close f
End If
End Sub
Du har råkat få med ett kommatecken för mycket i ditt funktionsanrop. Därför tolkar VB det som att du inte skickar med argument 1, alltså "inFil", vilken du inte har deklarerat som optional.
Om jag nu använder som ovan, så blinkar det bara till, men ingenting läses in i text1.
Om jag därimot hårdkodar i subben..
Sub OppnaFilTillTextRuta(inFil)
Dim f As Integer, FileName As String
FileName = inFil
f = FreeFile
Open FileName For Input As f
Form1.Text1.text = Input(LOF(f), f)
Close f
End Sub
Då fungerar det, men då har jag kommit ifrån återanvändningen.
Vad har jag gjort för fel som jag inte ser?
Har du funderat över ditt val av namn på variablerna? Vad jag kan förstå av din kod, är parametern "utfil" inte alls tänkt att vara namnet på en fil. Du har istället tänkt att den ska motsvara text-propertyn på ditt textfält, vilket ska ändras av din sub. Om det är så du har tänkt, skulle du kunna skicka hela Text1-kontrollen till suben, enligt:
Sub OppnaFilTillTextRuta(String As inFil, ByRef Text As TextKontroll)
Dim f As Integer, FileName As String
FileName = inFil 'App.Path & "\test.txt"
f = FreeFile
If Dir(FileName) <> "" Then
Open FileName For Input As f
TextKontroll.Text = Input(LOF(f), f)
Close f
End If
End Sub
Jag tog mig friheten att byta namn på parametern för att jag vill ha namn som säger något om vad parametrarna är till för.
Är det däremot så att parametern "utfil" verkligen är tänkt att vara namnet på en fil, då måste du istället öppna en fil som output för att kunna skriva till. Men som sagt, det såg inte ut som det var det du tänkte utifrån din kod.
Tack för att du tar dig tid. Jag förstår iden och den är ju bra, du uppfattade mig perfekt.
Nu är ju inte allt som glimmar.....
Jag fick problem.
Först så hade du gjort ett litet misstag, som jag rättade till, men jag får
ett error:
Sub OppnaFilTillTextRuta(inFil As String, ByRef Text As TextKontroll)
Dim f As Integer, FileName As String
FileName = inFil 'App.Path & "\test.txt"
f = FreeFile
If Dir(FileName) <> "" Then
Open FileName For Input As f
TextKontroll.Text = Input(LOF(f), f)
Close f
End If
End Sub
(Du hade råkat vända på inFil's datatyp)
Men jag får detta error:
User Defined tupe not defined.
Jag kör alltså VB 6.0 är det de som spökar?
[REDIGERAT]
Jag ändrade till :
TextKontroll As Object
Sen gick det av bara farten.
Tack för din hjälp
273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e