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

Nummeren variabelen

Status
Niet open voor verdere reacties.

A4papiertje

Gebruiker
Lid geworden
24 nov 2015
Berichten
20
Goedemorgen,

Ik heb het volgende probleem: Ik wil in een bestand laten zoeken naar een bepaalde regio. Omdat met de gevonden regio's hetzelfde uitgevoerd moet worden wil ik dit graag loopen zodat mijn code niet gigantisch wordt. Daarom dacht ik, ik maak variabelen zodat het gemakkelijk in een Do While past. Echter werkt dit niet, heeft iemand een oplossing?

Code:
x = 0
Regel = 4
Regio1 = "Regio A"
Regio2 = "Regio B"
Regio3 = "Regio C"
Regio4 = "Regio D"
Regio5 = "Regio E"
Zoeken = Regio1
Do While 
Cells.Find(What:=Zoeken, After:=Range("A1"), LookIn:=xlFormulas, _
                       LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False).Activate
                    ActiveCell.EntireRow.Select
                    If ActiveCell.Address = "$A$" & Regel Then
                    Else
                    Selection.Cut
                    Rows(Regel).Select
                    Selection.Insert Shift:=xlDown
                    End If
x = x + 1
Regel = Regel + 1
Zoeken = Zoeken + 1

Ik heb geprobeerd Zoeken = "Regio" + 1, dat geeft wel Regio2 maar gaat deze niet als variabele zien...
 
Gebruik een array voor die regio's:
Code:
    Dim Regio(26) As String
    Dim i As Integer
    
    For i = 1 To 26
        Regio(i) = "Regio " & Chr(i + 64)
    Next

Zo heb je Regio(1) = "Regio A" t/m Regio(26) = "Regio Z".
 
Oké, maar hoe kan ik er nu voor zorgen dat de variabele mee veranderd? Ik zal even proberen duidelijker te maken wat de bedoeling van het script is.

Ik heb een aantal Regio's met een naam, in dit voorbeeld bijvoorbeeld Nederland, België en Duitsland. Voor deze regio's wil ik in een bestand zoeken naar de regio's. Wat ik dacht te doen is dus iets maken wat uitgevoerd wordt, en onderaan terug naar gegaan wordt naar het beginpunt maar voor een andere regio. Zoiets dus:

Code:
Regio1 = "Nederland"
Regio2 = "België"
Regio3 = "Duitsland"
Zoeken = Regio1

'Handelingen, beginnend met:
Cells.Find(What:=Zoeken, After:=Range("A1"), LookIn:=xlFormulas, _
                       LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False).Activate

'Overige handelingen

Zoeken = Zoeken + 1 'Zodat het dus Regio2 wordt, of op een andere manier mag ook. Als er maar wordt teruggegaan naar boven en er gezocht wordt naar België en wanneer die klaar is naar Duitsland etc.
 
Door zo'n zelfde array te gebruiken. Je variabele is dan Regio en je verwijst met een nummer naar de index van die array. Regio(2) bijvoorbeeld is dan België.
 
Sorry voor trage reactie, was op vakantie. Heb nog eens gekeken en volgens mij maakt die
Code:
Chr(i + 64)
er de letter A van bij de eerste keer uitvoeren, dan B etc. Klopt dit?

En wat moet ik hier van maken zodat het niet "Regio A" & Regio "B" etc wordt maar "Nederland" & "België"?
 
Dat eerste gedeelte klopt, dat tweede is iets heel anders dan je initiële vraag en klopt je voorbeeld dus niet met wat je eigelijk wilt.
Je kan dan beter die landnamen op een blad invullen en daarmee de array vullen.

Als je die 3 landen in kolom A van het blad Landen hebt staan kan je bijvoorbeeld dit gebruiken:
Code:
Sub Regios()
    Dim Regio() As String
    Dim i As Integer
    
    With Sheets("Landen")
        For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
            ReDim Preserve Regio(i)
            Regio(i) = Sheets("Landen").Cells(i, 1)
        Next i
    End With
End Sub

Zo kan je dan ook weer Regio(1), Regio(2) en Regio(3) in je code gebruiken.
Maar er zijn meer mogelijkheden.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan