Error 13, gene idee wat ik fout doe? :)

Status
Niet open voor verdere reacties.

pj6620

Nieuwe gebruiker
Lid geworden
5 mei 2014
Berichten
1
Hey guys!

Voor een redelijk grote excel heb ik een iteratie nodig, en hiervoor heb ik een VBA geschreven (met veel moeite, want het is nieuw voor mij). Mijn VBA werkt perfect, zolang de waarden die mijn VBA berekent niet negatief zijn. Van zodra er een negatieve waarde is, geeft hij error 13. Ik hoop dat iemand mij hierbij zou kunnen helpen? :) Hieronder mijn code:

Code:
Sub ErosionWaterFlow()
Dim i, j, GekKol, GekRij, GekRijPlus1, GekRijPlus2, GekRijPlus3 As Long
Dim Getal1, getal2 As Double

Const Rowno = 4
Const Colno = 12

For i = 1 To 50

    Worksheets("TS0").Range("c4").Value = (Range("c4") + Range("c5")) / 2
    Worksheets("TS0").Range("c6").Value = (Range("c6") + Range("c7")) / 2

Next i

GekRij = Rowno
GekRijPlus1 = Rowno + 1
GekRijPlus2 = Rowno + 2
GekRijPlus3 = Rowno + 3

For j = 0 To 299

    For i = 1 To 100
    
    GekKol = Colno + j
    Getal1 = (Cells(GekRij, GekKol) + Cells(GekRijPlus1, GekKol)) / 2
    Worksheets("TS0").Cells(GekRij, GekKol).Value = Getal1
    
    
    getal2 = (Cells(GekRijPlus2, GekKol) + Cells(GekRijPlus3, GekKol)) / 2
    Worksheets("TS0").Cells(GekRijPlus2, GekKol).Value = getal2

    Next i
    
    GekKol = Colno + j + 1
    Worksheets("TS0").Cells(GekRij, GekKol).Value = Getal1
    Worksheets("TS0").Cells(GekRijPlus2, GekKol).Value = getal2


Next j

End Sub
 
Op welke regel krijg je error 13?
 
Ik denk dat een voorbeeldbestand hier wel op z'n plaats is.
 
pj6620

Error 13 heeft iets te maken met een variabele die de waarde die er in moet niet kan accepteren.
Bijvoorbeeld dim nNummer as integer om een variabele met een integere waarde te maken gevolgd door
nNummer = "Een". Dit levert een fout 13 op omdat een string niet in een integere waarde past.
Waarschijnlijk ontstaat dit door de foute declaraties aan het begin van je VBA programma.
Code:
Dim i, j, GekKol, GekRij, GekRijPlus1, GekRijPlus2, GekRijPlus3 As Long
is namelijk foutief omdat alleen de laatste variabele GekRijPlus3 krijgt de declaratie Long, de rest is van
gedeclareerd als Variant. Wil je dit goed doen dan moet je de volgende declaratie opnemen.
Code:
Dim i As Long, j As Long, GekKol As Long, GekRij As Long, GekRijPlus1 As Long, GekRijPlus2 As Long, GekRijPlus3 As Long
ook Getal1 is dus geen Double, maar een Variant, misschien zit daar de fout.

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan