Avatar billede Lasse Olsen Juniormester
16. august 2018 - 09:18 Der er 8 kommentarer og
1 løsning

Runtime error 6 - Overflow

Hej Computerworld
Jeg har følgende kode hvor jeg får en fejl med; Runtime error 6  - Overflow
når jeg kører koden. Fejlen opstår når jeg skal foretager beregningen i koden. Jeg har søgt på nettet og det eneste jeg kan komme frem til er at jeg har erklæret mine variable forkert. Jeg har prøvet med long selvom det ikke giver mening eftersom der kun er 500 rækker i mit dokument.
Jeg har ligeledes prøvet med variant af Cells(), da cellerne som udregnes bliver udskrevet som kommatal. Dog virker intet.

Sub testmakroinput()
Dim antal, stepsize, term As Integer

    antal = InputBox("Angiv antallet af priser i perioden")
    If antal = 6 Then
    Range("A1").Select
    Sheets("Marketdata").Select
    Columns("Z:AE").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("G1").Select
    ActiveSheet.Paste
    Range("G1").Select
    LR = ActiveWorkbook.Worksheets("Sheet1").Range("A" &  Rows.Count).End(xlUp).Row
    i = 0
    stepsize = 1
    ActiveWorkbook.Worksheets("Sheet1").Range("M1") = "Prisfald fra forgående periode"
    For term = 1 To LR Step stepsize
    ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 13).Value = (ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 11) - ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 12)) / ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 11)
    i = i + 1
    Next term
    Columns("N:N").Select
    Selection.NumberFormat = "0.00%"
   
    ElseIf antal = 7 Then
    Range("A1").Select
    Sheets("Marketdata").Select
    Columns("Z:AF").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("G1").Select
    ActiveSheet.Paste
    Range("G1").Select
    LR = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    i = 0
    stepsize = 1
    ActiveWorkbook.Worksheets("Sheet1").Range("N1") = "Prisfald fra forgående periode"
    For term = 1 To LR Step stepsize
    ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 14).Value = (ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 12) - ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 13)) / ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 12)
    i = i + 1
    Next term
    Columns("N:N").Select
    Selection.NumberFormat = "0.00%"
   
    Else
    MsgBox "Enter a valid expression"
    Do
    antal = InputBox("Prøv at indtaste et antal igen")
    Loop While (antal <> 6 And 7)
    End If
   
   
   
End Sub
Avatar billede Lasse Olsen Juniormester
16. august 2018 - 09:23 #1
Det skal lige siges at koden foretager udregningen rigtigt i alle celler men derefter stopper koden...
16. august 2018 - 09:29 #2
Kan lige få øje på to steder der kan give overflow
1) to steder dividerer du med noget i retning af: ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 11)
Hvis indholdet af den celle er nul eller tæt på nul vil det give overflow
2) Dim antal, stepsize, term As Integer
Vil give overflow hvis tallet bliver større end hvad en integer kan holde
Avatar billede Lasse Olsen Juniormester
16. august 2018 - 09:44 #3
Jeg dividerer ikke med 0 på noget tidspunkt det har jeg tjekket..
Mht. erklæring af variable så har jeg prøvet lidt forskelligt men det går stadig ikke op..
Avatar billede Lasse Olsen Juniormester
16. august 2018 - 09:44 #4
Kan der være andet?
16. august 2018 - 09:48 #5
Uden at se indholdet af dit ark er det svært at sige.
Kan det sendes ud af huset?
Eller kan du lave en version, der fejler uden kritisk information?

Du kan sende til mig via https://www.it-fjernundervisning.dk/info/hj%C3%A6lp
Avatar billede Lasse Olsen Juniormester
16. august 2018 - 10:11 #6
Jeg har sendt dig filen :)
16. august 2018 - 10:45 #7
Din kode feljer når i = 501, dvs.
ActiveWorkbook.Worksheets("Sheet1").Cells(2 + i, 12).address = $L$503
der er tom, hvorved du dividerer med 0 og får overflow
Avatar billede Lasse Olsen Juniormester
16. august 2018 - 10:49 #8
Fantastisk, tak for hjælpen :)
16. august 2018 - 10:50 #9
Så lidt :)
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