Ik heb een aantal tabbladen die een nummer als naam hebben. (bijv. 1 tot 15)
Het kan voorkomen dat een van de tabbladen ontbreekt (bijv. 3)
Hiervoor heb ik een macro, die de ontbrekende tabbladen in een array TabbladNB(AantalNB) zet.
Als een tabblad niet bestaat wil ik de bereiken(namen) verwijderen die bij het tabblad horen.
De namen zijn zodanig gedefinieerd, dat de laatste karakters altijd hetzelfde zijn als de naam van het bijbehorende tabblad.
Zo hoort bijv. Erik3 bij tabblad 3 en erik13 bij tabblad 13
Ik kan ervoor kiezen om 'Refersto' alle ongeldige verwiijzingen te verwijderen, maar ik wil geen bereiken verwijderen met een naam als 'Jan_totaal',
maar alleen die verwijzen naar een genummerd tabblad.
Onderstaande code zou dit moeten doen.
Ik bepaal eerst het aantal cijfers(karakters) van het nummer en vervolgens verwijder ik de namen die overeenkomen met een niet bestaand tabblad.
Het gaat niet goed als zowel 'Erik3'als 'Erik13' als naam bestaat, terwijl alleen het tabblad 3 niet bestaat.
Ik wil dan niet 'Erik13'verwijderen, maar wel 'Erik3'
Het script wil beide verwijderen.
Hoe kan ik dit oplossen?
Het kan voorkomen dat een van de tabbladen ontbreekt (bijv. 3)
Hiervoor heb ik een macro, die de ontbrekende tabbladen in een array TabbladNB(AantalNB) zet.
Als een tabblad niet bestaat wil ik de bereiken(namen) verwijderen die bij het tabblad horen.
De namen zijn zodanig gedefinieerd, dat de laatste karakters altijd hetzelfde zijn als de naam van het bijbehorende tabblad.
Zo hoort bijv. Erik3 bij tabblad 3 en erik13 bij tabblad 13
Ik kan ervoor kiezen om 'Refersto' alle ongeldige verwiijzingen te verwijderen, maar ik wil geen bereiken verwijderen met een naam als 'Jan_totaal',
maar alleen die verwijzen naar een genummerd tabblad.
Onderstaande code zou dit moeten doen.
Ik bepaal eerst het aantal cijfers(karakters) van het nummer en vervolgens verwijder ik de namen die overeenkomen met een niet bestaand tabblad.
Het gaat niet goed als zowel 'Erik3'als 'Erik13' als naam bestaat, terwijl alleen het tabblad 3 niet bestaat.
Ik wil dan niet 'Erik13'verwijderen, maar wel 'Erik3'
Het script wil beide verwijderen.
Hoe kan ik dit oplossen?
For nb = 1 To aantalNB
Shtname = TabbladNB(nb) 'De naam van het genummerde tabblad uit de array halen
If Shtname < 10 Then p = 1 '1 tot 9 tabbladen
If Shtname > 9 And s < 100 Then p = 2 '10 tabbladen of meer -> p=2
If Shtname > 99 Then p = 3 '100 tabbladen of meer
For Each n In ThisWorkbook.Names
'If InStr(1, n.RefersTo, "#REF") > 0 Then n.Delete
If Right(n.Name, p) = Shtname Then
If Len(Shtname) = p Then Debug.Print "naam: "; n.Name; ": p "; p; "Shtname: "; Shtname
'If Len(Shtname) = p Then n.Delete
End If
Next
Next