Avatar billede Nervatos Seniormester
17. juli 2018 - 14:35 Der er 4 kommentarer og
1 løsning

Kør et VBA script når et andet script er færdig

Hej med Jer

Jeg har fået dette script af Kabbak: https://www.computerworld.dk/eksperten/spm/1024200

Det kører sådan set ret godt, men når jeg så smider et sorter script ind efter 'next' - så er det kun noget af det. Så det er ligesom om, at scriptet kører samtidig med det andet.

Sub SortAllSheets()
  'Descending sort on A:F using column E, all sheets in workbook
  Dim WS      As Worksheet
  For Each WS In Worksheets
      WS.Columns("A:F").Sort Key1:=WS.Columns("E"), Order1:=xlDescending
  Next WS
End Sub

Er der en måde, som gør - at SortAllSheets bliver kørt når det andet er helt færdig?

PFT.
Avatar billede claes57 Ekspert
17. juli 2018 - 17:49 #1
lavpraktisk - hvis den første rutine opretter en fil i første linje og sletter den når den er færdig, og anden rutine har et loop, hvor den kører til fil ikke findes, før den går videre med arbejdet, så er den ged barberet. Det giver en del ekstra maskinarbejde, men løser opgaven. Evt kan indsættes en pause i anden rutines loop på fx 2 sek
17. juli 2018 - 21:55 #2
DoEvents plejer at kunne ordne sådan en lille problematik...

Next WS
DoEvents
Call sortering...

Hvis du har sat Application.ScreenUpdating=False så kunne det også se således ud
Next WS
Application.ScreenUpdating=true
Application.ScreenUpdating=false
Call sortering...
Avatar billede Nervatos Seniormester
18. juli 2018 - 18:55 #3
Hej smartoffice_dk

Enten bruger jeg DoEvents forkert, eller også virker den ikke til mit. For den har ikke sorteret i alle arkene.

Public Sub FlytKunder()
    Dim rk As Long, I As Long, RW As Long, Navn As String
    rk = ActiveSheet.UsedRange.Rows.Count
    OldSheets = "DATA"
    For I = rk To 2 Step -1
        Navn = Worksheets(OldSheets).Range("F" & I)
        ErSidenOprettet Navn, OldSheets
        RW = Worksheets(Navn).Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
        Worksheets(OldSheets).Range("A" & I & ",C" & I & ":F" & I).Copy Worksheets(Navn).Range("A" & RW)
        Worksheets(OldSheets).Rows(I & ":" & I).Delete Shift:=xlUp
    Next

    DoEvents
    Call SortAllSheets
End Sub

Hvad gør jeg galt?
18. juli 2018 - 21:12 #4
Det ser som fint ud... jeg har før bøvlet med copy funktionen, måske det var et forsøg værd at skrive koden om, således der ikke benyttes copy..
Hvis det er noget der må ses, så er du velkommen til at sende en mail til info@...., så skal jeg se om jeg kan liste en løsning frem
Avatar billede Nervatos Seniormester
20. juli 2018 - 17:54 #5
Jeg har beskrevet i linket, hvordan mit ark ser ud. Hvis det kan bruges, for jeg kan desværre ikke sende det.
Ellers tak for hjælpen.
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