Avatar billede jrlook Nybegynder
04. november 2008 - 20:17 Der er 1 kommentar

Gennemløbe 50+ ark med VBA kode

Hej

Jeg har gennem noget tid forsøgt mig med en VBA kode, der skal gennemløbe 50+ ark, hvor jeg skal have VBA til at kopiere handelsdata for derefter at indsætte dem i et oversigtsark. Selve koden kører fint, men stopper efter ca 40 kopi/sæt ind hændelser. Det er som om, at koden kun kan gennemløbe x-antal ark, og så skal den genstartes fra hvor den stoppede for at køre igennem. Og det kan den så, men jeg vil gerne have den til at køre hele vejen igennem, da andre også skal kunne benytte den. Jeg håber, at nogen kan dreje problemet.

Kode:

Sub test()

Dim navn As String

Dim hovedstol As Double
Dim valuta As Variant
Dim handelskurs As Double
Dim terminskurs As Double
Dim indikator As Integer

Dim ws As Worksheet
Application.ScreenUpdating = False

x = 0

o = 2

For Each Worksheet In Worksheets

o = o + 1

'information starter i række 27 og forsætter x antal rækker nede
Do Until Cells(27 + x, 2) = 1 Or Cells(27 + x, 2) = -1
If Cells(27 + x, 2) = "" Then
ActiveSheet.Next.Select
x = 0
End If

Loop

navn = Cells(7, 2).Value
hovedstol = Cells(27 + x, 3).Value
valuta = Cells(27 + x, 4).Value
handelskurs = Cells(27 + x, 8).Value
terminskurs = Cells(27 + x, 9).Value
indikator = Cells(27 + x, 2).Value

Sheets("data").Activate

Cells(o, 1).Value = "Termin"
Cells(o, 2).Value = navn
Cells(o, 3).Value = valuta
Cells(o, 4).Value = hovedstol
Cells(o, 4).Activate
Selection.NumberFormat = "#,##0.00"
Cells(o, 5).Value = handelskurs
Cells(o, 5).Activate
Selection.NumberFormat = "#,##0.00"
Cells(o, 6).Value = terminskurs
Cells(o, 6).Activate
Selection.NumberFormat = "#,##0.00"
Cells(o, 7).Value = (terminskurs - handelskurs) * hovedstol * indikator
Cells(o, 7).Activate
Selection.NumberFormat = "#,##0.00"
Sheets(navn).Activate

x = x + 1

Next Worksheet

End Sub
Avatar billede kabbak Professor
04. november 2008 - 21:33 #1
jeg har rettet lidt, se om det hjælper

Sub test()

    Dim navn As String
    Dim hovedstol As Double
    Dim valuta As Variant
    Dim handelskurs As Double
    Dim terminskurs As Double
    Dim indikator As Integer
    Dim X As Integer, O As Integer
    Dim ws As Worksheet
    Application.ScreenUpdating = False

    X = 0

    O = 2

  For Each Worksheet In Worksheets

        ws.Activate
        O = O + 1
  ' ** nedenstående, forstår jeg ikke, du kører i loop, men X tæller ikke op i loopet
        'information starter i række 27 og forsætter x antal rækker nede
        Do Until Cells(27 + X, 2) = 1 Or Cells(27 + X, 2) = -1
            If Cells(27 + X, 2) = "" Then
                ActiveSheet.Next.Select
                X = 0
            End If

        Loop
'***********
        navn = Cells(7, 2).Value
        hovedstol = Cells(27 + X, 3).Value
        valuta = Cells(27 + X, 4).Value
        handelskurs = Cells(27 + X, 8).Value
        terminskurs = Cells(27 + X, 9).Value
        indikator = Cells(27 + X, 2).Value

        With Sheets("data") ' ingen select, det tager tid
            .Cells(O, 1).Value = "Termin"
            .Cells(O, 2).Value = navn
            .Cells(O, 3).Value = valuta
            .Cells(O, 4).Value = hovedstol
            .Cells(O, 5).Value = handelskurs
            .Cells(O, 6).Value = terminskurs
            .Cells(O, 7).Value = (terminskurs - handelskurs) * hovedstol * indikator
        End With
        Sheets(navn).Activate

        X = X + 1

    Next Worksheet
    Sheets("data").Activate
    Range(Cells(3, 4), Cells(O, 7)).NumberFormat = "#,##0.00" ' denne til sidst, da formateringen tager tid, det er nok med en gang
End Sub
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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