• 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.

Macro Fout: "Subscript valt buiten bereik"

Status
Niet open voor verdere reacties.

Moesappel

Gebruiker
Lid geworden
17 nov 2017
Berichten
8
Beste lezers,

Bij het uitvoeren van deze macro krijg ik een foutmelding; "Subscript valt buiten bereik"

Kan iemand mij uitleggen wat ik fout doe en waarom?

I.v.m gevoelige informatie stuur ik geen bestand:D


Code:
Sub Macro3()
'
' Macro3 Macro
'
'

Dim x As Integer

For x = 1 To 2
Dim a As String
With Worksheets("Blad1").Range("A1")
a = .Offset(1, 0)
Worksheets("Data").Range("A5") = a
End With
    
    Dim V1 As Single
    Dim V2 As Single
    Dim myData As Workbook

    Worksheets("Dyn Reg(1)").Select
    V1 = Range("W122")
    Worksheets("Dyn Reg(1)").Select
    V2 = Range("W123")

    Set myData = Workbooks.Open("C\Bestand;).xlsx")
    Worksheets("Blad1").Select
    Worksheets("Blad1").Range("A1").Select
    RowCount = Worksheets("Blad1").Range("A1").CurrentRegion.Rows.Count
    With Worksheets("Blad1").Range("A1")
    .Offset(RowCount + x - 1, 1) = V1
    .Offset(RowCount + x, 1) = V2
    End With
    
Next
'
End Sub
 
Moesappel,


zonder bestand wordt het wel lastig om uit te zoeken waar de fout zit.
om te beginnen kan je in ieder geval melden op welke regel de foutmelding zich voor doet...
gokje... je macro verwijst naar een werkblad wat niet bestaat..


Lambert
 
I.v.m gevoelige informatie stuur ik geen bestand:D
Dan maak je toch even een bestandje zonder gevoelige informatie? Zolang het probleem maar reproduceerbaar is. Ik zie wel dat je in je lus twee keer hetzelfde bestand opent zonder ze weer te sluiten. En dat gaat sowieso niet goed natuurlijk.
 
Aah natuurlijk, het bestand weer sluiten, zal ik ff aanpassen..

Maandag stuur ik wel ff bestandje
 
I.v.m gevoelige informatie stuur ik geen bestand
:evil:
Een gelijkend voorbeeld bestandje??? Of ben je een van de velen TSers op helpmij die voor een of andere staatsveiligheid werkt en uw werk is zo geheim dat je zelf niet weet waar je mee bezig bent.
 
Zo he, dat is wel heel ver gezocht:shocked:

Ik ben student, en heb vandaag voor het eerst met macro's gewerkt:thumb:
 
De fout zit in de naam van je tab Dyn Reg(1) - pas deze naam aan bv zo:
Code:
Worksheets("Dyn[COLOR="#FF0000"][B]_[/B][/COLOR]Reg(1)")

Code:
Sub Macro3()
'
    Dim x As Integer
    Dim V1 As Single
    Dim V2 As Single
    Dim a As String
    Dim myData As Workbook

    For x = 1 To 2
        Worksheets("Data").Range("A5") = Worksheets("Blad1").Range("A2")
        With Worksheets("Dyn_Reg(1)")
            V1 = .Range("W122")
            V2 = .Range("W123")
        End With
        Set myData = Workbooks.Open("C\Bestand;).xlsx")
        RowCount = Worksheets("Blad1").Range("A1").CurrentRegion.Rows.Count
        With Worksheets("Blad1").Range("A1")
            .Offset(RowCount + x - 1, 1) = V1
            .Offset(RowCount + x, 1) = V2
        End With
    Next
End Sub
 
Laatst bewerkt:
Zo he, dat is wel heel ver gezocht:shocked:
Het niet plaatsen van een voorbeeldbestand kan werken als een rode lap op een stier, zeker met het excuus dat het originele bestand "topsecret" is. Daarom wordt ook gevraagd om een voorbeeldbestand ... :)
 
De foutmelding wordt in ieder geval veroorzaakt door het verwijzen naar een niet bestaand werkblad of bereik.

En dit stukje:
Code:
Dim a As String
With Worksheets("Blad1").Range("A1")
a = .Offset(1, 0)
Worksheets("Data").Range("A5") = a
End With

Kan je beter zo schrijven:
Code:
Sheets("Data").Range("A5") = Sheets("Blad1").Range("A2")

Dan maak je het jezelf en debuggen een stuk makkelijker.

Edit:
Ik zie net dat Cobbe dat al had gedaan.
 
Laatst bewerkt:
Bedankt allemaal, met jullie hulp en tips is het nu al gelukt:thumb:

Onderstaande code werkt inmiddels

Wat de code doet is, in 1 cel op het blad 'Data', een getal van een ander tabblad plaatsen, namelijk 'Blad1'.
Dan wordt automatisch, uit weer een ander blad, twee waarden gekopieerd naar een nieuw Excelbestand.

Daarna wordt de loop herhaalt, en komt in 1 cel op het blad 'Data' een volgend getal van het tabblad 'Blad1'.
Dan wordt weer automatisch, uit die andere blad, twee waarden gekopieerd naar een nieuw Excelbestand, alleen dan onder de eerder geplaatste waarden geplaatst.

Misschien kan de code nog simpeler, maar daar heb ik nog te weinig programmeerkennis voor:)

Code:
Dim x As Integer
Dim a As Single
Dim V1 As Single
Dim V2 As Single
Dim myData As Workbook
    
For x = 1 To 2
    With Worksheets("Blad1").Range("A1")
        a = .Offset(x, 0)
        Worksheets("Data").Range("A5") = a
    End With
    Worksheets("Dyn Reg(1)").Select
    V1 = Range("W122")
    Worksheets("Dyn Reg(1)").Select
    V2 = Range("W123")

    Set myData = Workbooks.Open("C:\Bestand;).xlsx")
    Worksheets("Blad1").Select
    Worksheets("Blad1").Range("A1").Select
    RowCount = Worksheets("Blad1").Range("A1").CurrentRegion.Rows.Count
    With Worksheets("Blad1").Range("A1")
    .Offset(RowCount + x - 1, 1) = V1
    .Offset(RowCount + x, 1) = V2
    End With
Workbooks("Nieuw.xlsx").Close ([SaveChanges:=True])
Next
'
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan