Avatar billede dsj1972 Juniormester
09. september 2008 - 09:05 Der 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.

På forhånd tak!!

mvh dsj
Avatar billede rvm Nybegynder
09. september 2008 - 09:08 #1
Lav en tjeck på hvad der er i variablen Dat på linien efter "Dat = InputBox("Indsæt graverings dato", , Dat)"
Avatar billede dsj1972 Juniormester
09. september 2008 - 09:12 #2
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??
Avatar billede dsj1972 Juniormester
09. september 2008 - 09:17 #3
kan man skrive det som:

If Dat.InputBox = True Then Resume Next
    Else
Avatar billede rvm Nybegynder
09. september 2008 - 09:23 #4
Hvis der trykkes på cancel i en inputbox returenere den en tom streng:

If Dat = "" Then
' hvis der er trykket cancel
else

endif
Avatar billede dsj1972 Juniormester
09. september 2008 - 09:30 #5
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
Avatar billede dsj1972 Juniormester
09. september 2008 - 09:39 #6
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester