Hur gör man om man vill fortsätta att spara på en befintlig textfil? Om du öppnar en textfil med ordet append så kommer text som skrivs att läggas till i slutet av filen: Detta var ett ganska intressant exempel där man kan göra flera antaganden i just en loop för att spara mycket tid, speciellt då det rör många poster. Är du 100 % säker på att Loopen snabbas upp av det? Jag har nämligen för mg att värdet beräknas innan och sparas internt i en max-variabel. Prova till exempel att ändra på ett sådant värde inuti loopen. Tack så mycket, Det var många bra förslag. Alltid lär man sig någonting nytt när man är inne på nätet och surfar runt. Ser att du använder dig av "On Error Resume Next". Måste varna att det kan vara mycket förädiskt om ett fel skulle uppstå. Om du inte vill visa något felmeddelande bör du istället använda dig av något sånt här:Fortsätta spara i en txt-fil
Hur jag än gör så raderas den och det nya skrivs in.
Kommandona jag använder ser ut som följer.
Private Sub Command5_Click() 'spara lista
'cd = Commondialog
On Error Resume Next
cd.DialogTitle = "Spara nummer"
cd.Filter = "Textmeddelande.txt|*.txt"
cd.InitDir = "c:\program\klp"
cd.ShowSave
Call SaveList(List1, "C:\program\klp.txt")
End Sub
Sub SaveList(Lst As ListBox, file As String) 'for saving a List
'Call SaveList (List1,"C:\Windows\skrivbord\Saved.txt")
On Error Resume Next
Dim I As Variant
Dim a As Variant
Open cd.FileName For Output As #1
For I = 0 To Lst.ListCount - 1
a = Lst.List(I)
Print #1, a
Next
Close 1
Exit Sub
End Sub
Kan någon hjälpa mig med detta, skicka gärna med samma sträng fast med någon ändring i. Är hjälplös nybörjare.
mvh JockeSv: Fortsätta spara i en txt-fil
<code>
Open cd.FileName For Append As #1
For I = 0 To Lst.ListCount - 1
a = Lst.List(I)
Print #1, a
Next
Close 1
</code>
/Pellelite optimering...
For I = 0 To Lst.ListCount - 1
a = Lst.List(I)
Print #1, a
Next
Här loopar man tills I är lika med Lst.ListCount - 1. Detta innebär att man måste varje gång fråga lst hur många rader det finns i listrutan. Genom att eliminera den slagningen så föreslås följande:
max = Lst.ListCount - 1
For I = 0 To max
a = Lst.List(I)
Print #1, a
Next
Därefter sätts a till lst.List(i). Här tilldelas a en sträng med ett värde från listan. Enklast vore att direkt skicka in värdet.
max = Lst.ListCount - 1
For I = 0 To max
Print #1, Lst.List(I)
Next
Sådär, det var bara ett litet tips till framtida loopar.
Hälsningar
/PelleSv: lite optimering...
Jag har för mig att jag själv hade problem med att värdet inte ändrades när jag gjorde saker i loopen som förändrade maxvärdet. Detta var visserligen i VBA, men jag kan inte tänka mig att det skulle vara annorlunda i "vanliga" VB. (Jag löste det med en Do-loop, ifall någon undrar)
/Niklas JanssonSv: lite optimering...
mvh JockeSv: Fortsätta spara i en txt-fil
Public Sub Test()
On Error Goto Test_Err
' Kod
Exit Sub
Test_Err:
Debug.Print Err.Number & ": " & Err.Description
End Sub
Lite mer utförlig felhantering med dialog som visar fel kan vara:
Public Sub Test()
On Error Goto Test_Err
' Kod
Test_Exit:
Exit Sub
Test_Err:
MsgBox Err.Number & ": " & Err.Description
Resume Test_Exit
End Sub