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

een variabel aantal opeenvolgende sheets selecteren

Status
Niet open voor verdere reacties.

Haije

Terugkerende gebruiker
Lid geworden
24 mrt 2009
Berichten
4.314
Besturingssysteem
Windows 11
Office versie
Office 2016 Professional Plus en Office 2010 Home & Student
Goedemorgen,

hoe kan ik mbv VBA snel een variabel aantal opeenvolgende sheets selecteren zonder een for next lus?
Het aantal kan varieren, maar wel oplopen tot 200.
Ik zoek een methode waarbij ik alleen het laagste en het hoogste indexnr hoef op te geven.
 
Code:
Sub BladenSelecteren()
  Dim c0 As String, i As Integer
  For i = 95 To 200
    c0 = c0 & "|" & Sheets(i).Name
  Next
  Sheets(Split(Mid(c0, 2), "|")).Select
End Sub
sorry, te snel gereageerd, het moest zonder for next loop, foutje bedankt.
 
Laatst bewerkt:
geeft niet ;)
 
hebben alle bladen eenzelfde soort naam ? Blad123, blad124, ..., blad199 ?
 
Als je Blad4 t/m Blad 14 wil selecteren:

Code:
Sub M_snb()
    Sheets([transpose("Blad"&row(4:14))]).Select
End Sub

PS. Dit kan alleen in Excel.
 
cow, snb,

helaas de namen van de bladen zijn niet te gebruiken (want elke keer weer anders, nl dienstnummers), de indexnrs wel
 
Dan gebruik je toch 'gewoon':

Code:
Sub M_sn()
    Sheets([transpose(row(1:3))]).Select
End Sub

om de werkbladen met indexnummer 1,2 en 3 te selecteren.
 
snb,

wat je 'gewoon' noemt.
Dit werkt, zolang de hoogste index hard opgegeven wordt.
Maar omdat ik de hoogste indexwaarde pas ken als mijn macro zijn werk heeft gedaan, dacht ik er dit van te maken:
(de macro stopt nu in het laatste blad dat geselecteerd moet worden)
Code:
nr = ActiveSheet.Index
Sheets([transpose(row(1:nr))]).Select
en dan werkt het niet meer.
Dus is nu de vraag: hoe verwerk ik die variabele 'nr' in je oplossing?
 
of

Code:
Sub M_snb()
    Sheets(evaluate("transpose(row(1:" & activesheet.index & "))")).Select
End Sub

of
Code:
Sub M_snb()
    activesheet.names.add "snb_001",activesheet.index
    Sheets([transpose(row(1:snb_001))]).Select
End Sub
 
snb,

top, die eerste gaat het worden, bedankt!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan