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

Hoe vraag controleer ik of een sheet het laatste sheet is?

Status
Niet open voor verdere reacties.

Haije

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

de hele ochtend op verschillende plaatsen gezocht naar de manier om het volgnummer van een sheet op te vragen; maar helaas ik kom er niet uit.

Hoe kan ik in VBA controleren of de huidige sheet de laatste is?

Mbv
Code:
For t = 1 to ActiveWorkbook.Sheets.Count
bepaal ik aan het begin van een loop het aantal tabbladen. In de loop worden verschillende zaken gedaan, o.a. wotdt er gecontroleerd of een blad leeg is; als dat het geval is, wordt het betreffende blad verwijderd. Als dit gebeurt verandert het aantal sheets en loopt de loop vast omdat er inmiddels mindersheets zijn dan in eerste instantie berekend.

Mijn idee is nu om te controleren of een sheet het laatste sheet in een workbook is, maar hoe doe ik dat?
 
De code die je gebruikt bepaalt wel het laatste blad, maar waarschijnlijk doe je dat alleen aan het begin van de code waarmee je bladen verwijdert. Telkens als je een blad verwijdert, moet je de code opnieuw laten bepalen wat het laatste blad is. Hoe je dat precies doet, is afhankelijk van hoe je code er uitziet.
 
Zo bijvoorbeeld:
Code:
Dim aantal as integer
'Deze code is geschreven door Zapatr
Aantal = ActiveWorkbook.Sheets.Count
For t = 1 to Aantal
IF......  Then 'je voorwaarde om blad te verwijderen
Sheets(t).Delete
End If
Aantal = Aantal -1
Next t
 
zapatr,

bedankt voor je reactie, dit is een goede workaround voor mijn probleem; die ga ik gebruiken.

Maar betekent dit ook dat er geen eenvoudige manier is om te bepalen of een sheet het laatste sheet in een workbook is?
 
Maar betekent dit ook dat er geen eenvoudige manier is om te bepalen of een sheet het laatste sheet in een workbook is?
Tja, hoe bedoel je dat precies?
Je verwijdert bladen, dus het aantal bladen verandert steeds, dan moet je daar ook steeds op controleren.
 
zapatr,

wat ik bedoel is dit:

mbv
Code:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
kun je in een sheet de laatste cel vinden; blijkbaar hangt er aan die cel een kenmerk "dit is de laatste cel". Ik had gedacht/gehoopt dat er ook ziets zou zijn waardoor je in een workbook kon bepalen of een sheet de laatste is.
 
Laatst bewerkt:
Met de code hierboven bepaal jet toch het laatste blad?
En dan kun je - net als bij de laatste cel - toch ook naar dat laatste blad gaan?
Als dat geen antwoord is op je vraag, dan rijst de vraag: als je het laatste blad kent, WAT WIL JE DAAR DAN MEE DOEN ?
 
zapatr,

vooropgesteld: jouw oplossing werkt perfect, die pas ik dus ook toe en mijn probleem is dus opgelost!

Mijn oorspronkelijke veronderstelling was echter dat de verschillende sheets in een workbook over een kenmerk "laatste" / "niet laatste" o.i.d. zouden beschikken. Daar wilde ik dan gebruik van maken om te testen of ik al op het laatste sheet was aangekomen.
 
Mijn oorspronkelijke veronderstelling was echter dat de verschillende sheets in een workbook over een kenmerk "laatste" / "niet laatste" o.i.d. zouden beschikken. Daar wilde ik dan gebruik van maken om te testen of ik al op het laatste sheet was aangekomen.
Net als "de laatste cel" kan ook "het laatste blad" voortdurend wijzigen, afhankelijk van de inhoud van het blad en het aantal verwijderde of toegevoegde bladen. Voeg je in een blad gegevens toe of verwijder je er, dan moet je opnieuw bepalen wat de laatste cel is. En evenzo: voeg je bladen toe of verwijder je er, dan moet je opnieuw bepalen wat het laatste blad is. Dat "testen" waarover jij het hebt, doe je (wat het aantal bladen betreft) met sheets.count .
 
met sheets.count tel ik toch hoeveel sheets er zijn?

maar ik wilde weten wat het nummer van de huidige sheet is.

dan kon ik dat vergelijken met het aantal, dus zoiets:

Code:
if activesheet(nummer van de huidige sheet) = sheets.count then
 
met sheets.count tel ik toch hoeveel sheets er zijn?
Ja, en dat aantal is steeds het laatste blad (op het moment dat je telt!)
Code:
if activesheet(nummer van de huidige sheet)
Dat is geen geldige opdracht, zoals je zelf makkelijk kunt nagaan.
En met sheets(nummer van de sheet) moet je oppassen, want als je bladen toevoegt en verwijdert, dan kan dat nummer een ander zijn als dat jij denkt dat het is.
 
en als ik nou had gevraagd
"wat is het nummer (binnen het workbook) van de sheet waar ik nu in werk?"

wat was dan je antwoord geweest?
 
Dat kun je bv. als volgt nagaan:
Code:
Sub macro1()
Dim x As Integer
'Deze code is geschreven door Zapatr
For x = 1 To Sheets.Count
If Sheets(x).Name = "[COLOR="blue"]Naam van het blad waarvan je het nummer wil weten[/COLOR]" Then
MsgBox ("Het blad waarin je werkt is bladnummer " & x)
End If
Next x
End Sub
Je krijgt dan het bladnummer dat het 'zoveelste' blad is in de reeks zoals zoals je ze onderaan ziet staan.
Verwijder je bladen, voeg je er toe, of verplaats je het betreffende blad, dan verandert ook dat nummer.
 
Wat korter:
Code:
Sub macro2()
MsgBox ("Het blad waarin je werkt is blad nummer " & ActiveSheet.Index)
End Sub
 
zapatr

bedankt, dit is een duidelijk antwoord.

discussie gesloten!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan