• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Run-time error 9

Status
Niet open voor verdere reacties.

Sir Botex

Gebruiker
Lid geworden
26 dec 2008
Berichten
37
Dag allemaal,

als ik in onderstaande code de "sheet1" 's vervang door "berekening" (want ik wil mijn werkblad "berekening" noemen, niet "sheet1") krijg ik een runtime-error, nummer 9 met beschrijving: subscript out of range

originele code met "sheet1"
Code:
Sub test1()
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets("sheet1")
    
    Dim rij, kolom, rijresultaat, fasenr, faserij, fase1, fase2, fase3, fase4 As Integer
    Dim fasevoeder, fasekg, voorwaarde As Variant

    rij = 10
    fasenr = 1
    fase1 = 10
    fase2 = 12
    fase3 = 16
    fase4 = 21
    fasekg = 0
    rijresultaat = 29
 

'in welke kolom staan de juiste waarden?

    If Not Sheets("sheet1").Rows(1).Find([b29], , xlValues, xlWhole) Is Nothing Then
    kolom = Sheets("sheet1").Rows(1).Find([b29], , xlValues, xlWhole).Column
    Else: kolom = 1
    End If

    Sheets("sheet1").[b40] = kolom

'waarden uit juiste kolom halen
    
    Do Until fasenr > 4
        Do Until fasekg > 0
            fasekg = Sheets("sheet1").Cells(rij, kolom).Value
            rij = rij + 1
        Loop
        Worksheets("sheet1").Cells(rijresultaat, 7).Value = Worksheets("sheet1").Cells(rij - 1, kolom).Value
        Worksheets("sheet1").Cells(rijresultaat, 6).Value = Worksheets("sheet1").Cells(rij - 1, 3).Value
        fasenr = fasenr + 1
        fasekg = 0
        rijresultaat = rijresultaat + 1
        If fasenr = 1 Then rij = fase1 Else If fasenr = 2 Then rij = fase2 Else If fasenr = 3 Then rij = fase3 Else rij = fase4
    Loop

      
 
 Set xlSheet = Nothing
 Set xlBook = Nothing
 xlApp.Quit
 Set xlApp = Nothing
End Sub


aangepaste code met "berekening"

Code:
Sub test1()
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlSheet = xlBook.Worksheets("berekening")
    
    Dim rij, kolom, rijresultaat, fasenr, faserij, fase1, fase2, fase3, fase4 As Integer
    Dim fasevoeder, fasekg, voorwaarde As Variant

    rij = 10
    fasenr = 1
    fase1 = 10
    fase2 = 12
    fase3 = 16
    fase4 = 21
    fasekg = 0
    rijresultaat = 29
 

'in welke kolom staan de juiste waarden?

    If Not Sheets("berekening").Rows(1).Find([b29], , xlValues, xlWhole) Is Nothing Then
    kolom = Sheets("berekening").Rows(1).Find([b29], , xlValues, xlWhole).Column
    Else: kolom = 1
    End If

    Sheets("berekening").[b40] = kolom

'waarden uit juiste kolom halen
    
    Do Until fasenr > 4
        Do Until fasekg > 0
            fasekg = Sheets("berekening").Cells(rij, kolom).Value
            rij = rij + 1
        Loop
        Worksheets("berekening").Cells(rijresultaat, 7).Value = Worksheets("berekening").Cells(rij - 1, kolom).Value
        Worksheets("berekening").Cells(rijresultaat, 6).Value = Worksheets("berekening").Cells(rij - 1, 3).Value
        fasenr = fasenr + 1
        fasekg = 0
        rijresultaat = rijresultaat + 1
        If fasenr = 1 Then rij = fase1 Else If fasenr = 2 Then rij = fase2 Else If fasenr = 3 Then rij = fase3 Else rij = fase4
    Loop

      
 
 Set xlSheet = Nothing
 Set xlBook = Nothing
 xlApp.Quit
 Set xlApp = Nothing
End Sub

waar zit mijn redeneringsfout?
 
Beste Sir Botex ;)

Waarschijnlijk heeft het met uw bereik te maken en niet met de naam van de sheet.
Of er staat een spatie achter of voor tabblad berekening.

Controleer dit eens.

Groetjes Danny. :thumb:
 
Dag Danny,

ik heb beide zaken gecontrolleerd:
* aan het bereik kan het niet liggen, daar ik enkel de naam van de sheet wijzig
* er staan geen spaties te veel of te weinig...

nog suggesties
 
Als je code stopt dan druk je op Alt F11 en daar staat dan een gele regel , welke regel is gekleurd ?
 
is die declaratie nodig ? zet er eens een ' voor
Code:
  ' Set xlSheet = xlBook.Worksheets("berekening")
dan zal de code wel doorlopen .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan