09. september 2008 - 09:05Der er
5 kommentarer og 1 løsning
hjælp til "cancel" knap på vba kode
Hejsa,
Jeg har lavet en lille nummererings kode til gravering og det virker helt super......altså lige på nær hvis man kommer til at klikke på "cancel" knappen i inputboxen, det resultere i at jeg mister indhold i txt. filen.
Her er min kode
Open "C:\test\SerieNr.txt" For Input As #1 Line Input #1, a$ Close #1 Ser = Val(a$) Ser = Ser + 18 Open "c:\test\SerieNr.txt" For Output As #1 Print #1, Str(Ser) Close #1
Open "C:\test\Dato.txt" For Input As #2 Line Input #2, a$ Close #2 Dat = Val(a$) Dat = InputBox("Indsæt graverings dato", , Dat) Open "c:\test\Dato.txt" For Output As #2 Print #2, Str(Dat) Close #2
num = Ser
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells acell.Range.Text = Format(Str(Dat), "000000") & " " & Format(Str(num), "0000") num = num + 1 Next acell
Som sagt så er det "cancel" funktionen som er mit problem, så her tænker jeg at man måske kunne indfører en linie som fortæller at hvis "cancel" er "sand" så skal den efterlade txt filerne som de var. Ved ikke om det kan lade sig gøre!!
Jeg har selv prøvet at søge lidt i hjælp funktion, men der er ikke meget beskrevet om "ok" og "cancel" i forbindelse med inputbox. Derfor håber jeg at der er nogen som kan give lidt hjælp i den retning.
Ok, glemte vist lige at skrive at jeg ikk er nogen haj i VBA koder og programmering.
hvad mener du med at lave en tjeck på variablen, er det en linie som skal indføres efter som tjekker om "Dat = InputBox("Indsæt graverings dato", , Dat)" er sand eller falsk??
Ja det var sådan noget i den stil, men hvordan får det koden til at starte forfra og ikke rører ved min Dato.txt fil eller rettere, "huske" sidste værdi stående i Dato.txt
Har lige prøvet koden og den tømmer stadig Dato.txt for værdi og efterlader Dato.txt tomt
OK, det virker skisme, tænk at så små detaljer kan gøre så stort udslag.
Var nød til at indsætte en "On Error Resume Next" for at undgå en Debug fejl i linien her "acell.Range.Text = Format(Str(Dat), "000000") & " " & Format(Str(num), "0000") "
Og nu virker det søreme.....rigtig lækkert.
Her er så den færdige kode som virker
Open "C:\test\SerieNr.txt" For Input As #1 Line Input #1, a$ Close #1 Ser = Val(a$) Ser = Ser + 18 Open "c:\test\SerieNr.txt" For Output As #1 Print #1, Str(Ser) Close #1
Open "C:\test\Dato.txt" For Input As #2 Line Input #2, a$ Close #2 Dat = Val(a$) Dat = InputBox("Indsæt graverings dato", , Dat) If Dat = "" Then ' hvis der er trykket cancel Else
Open "c:\test\Dato.txt" For Output As #2 Print #2, Str(Dat) Close #2 End If num = Ser
On Error Resume Next
For Each acell In ActiveDocument.Tables(1).Rows(1).Cells acell.Range.Text = Format(Str(Dat), "000000") & " " & Format(Str(num), "0000") num = num + 1 Next acell
Takker rvm mange gange for hurtig svar og indsats. og point tildeles.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.