Avatar billede bkorsgaard Nybegynder
17. januar 2002 - 11:24

Køre afviklingen af VBA-kode bare videre...?

Hej alle

Jeg bruger WBA i Word 97...

I nedenstående kode har jeg et problem med at værdien i variablen \"ICaseNumber\" bliver forskellig hvis jeg på den ene side afvikler VBA-koden på normal måde, via play-knappen., eller hvis jeg på den anden side single stepper mig igennem via F8. Koden virker nemlig korrekt når jeg single stepper mig igennem den i modsætning til hvis jeg benytter play-knappen.

Den fil som undersøges, via nedenstående kode,  indeholder en tabel med nogle rækker og nogle kolonner. Filen ligger på et forholdsvis langsomt netværk - kan det have noget med sagen at gøre samtidig med at jeg benytter funktionen \"Selection.InsertBreak Type:=wdPageBreak\"? Kan det ske at afviklingen af VBA-koden bare køre videre inden alle faktuelle oplysninger fra filen på det langsomme netværk er nået frem?

Er der noget jeg kan slå til/fra for at afhjælpe problemet?

Et tillægsspørgsmål: Hvordan indsætter man et delay på f.eks. 2 sekunder - koden skal helst svare nogenlunde til delay(2000) ell., som det kendes fra andre programmeringssprog, således at det er uafhængig af processorhastighed på den pågældende maskine det afvikles på...

Med venlig hilsen
Bjarke Korsgaard



FieldSagsbehandlerOld = \"\"
FieldForundersoegelseOld = \"\"
ICaseNumber = 0
LastLine = False
FirstTimeDoWhile = True

Do While LastLine = False
  Selection.MoveRight Unit:=wdCell, Count:=6, Extend:=wdMove
  If Left(UCase(Selection.Text), 1) >= \"A\" And Left(UCase(Selection.Text), 1) <= \"Z\" Then
    FieldSagsbehandler = UCase(Left(Selection.Text, 3))
    If FieldSagsbehandler <> FieldSagsbehandlerOld Then
      If FirstTimeDoWhile = True Then
        FirstTimeDoWhile = False
        Else
          Selection.InsertBreak Type:=wdPageBreak
          If ICaseNumber <= INumberOfCases Then
            \'ICaseNumber = ICaseNumber + 1
            Selection.MoveDown Unit:=wdLine, Count:=1  \'én ekstra pga. \"InsertBreak\"
            Selection.HomeKey Unit:=wdRow
          End If
      End If
    End If
    Else
      Selection.MoveLeft Unit:=wdCell, Count:=1, Extend:=wdMove
      If Left(UCase(Selection.Text), 1) >= \"A\" And Left(UCase(Selection.Text), 1) <= \"Z\" Then
        FieldForundersoegelse = UCase(Left(Selection.Text, 3))
        If (FieldForundersoegelse <> FieldForundersoegelseOld) Then
          Selection.InsertBreak Type:=wdPageBreak
          If ICaseNumber <= INumberOfCases Then
            \'ICaseNumber = ICaseNumber + 1
            Selection.MoveDown Unit:=wdLine, Count:=1  \'én ekstra pga. \"InsertBreak\"
            Selection.HomeKey Unit:=wdRow
          End If
        End If
        Else
          MsgBox \"Der er indtastet noget forkert i kolonnen \'Sagsbehandler\' eller \'Forundersøgelse\'...\" + Chr(13) + \"Ret venligst fejlen og kør makroen igen...\", vbOKOnly + vbCritical, \" Fejl!\"
      End If
  End If
 
  If ICaseNumber < INumberOfCases Then
    Selection.HomeKey Unit:=wdRow
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    ICaseNumber = ICaseNumber + 1
  End If
 
  If ICaseNumber >= INumberOfCases Then
    LastLine = True
  End If
 
  FieldSagsbehandlerOld = FieldSagsbehandler
  FieldForundersoegelseOld = FieldForundersoegelse
Loop
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
Kategori
Kurser inden for grundlæggende programmering

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