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

sheetname bestaat al

Status
Niet open voor verdere reacties.
zoiets:

Code:
Sub rename()
Dim opslag() As String
ReDim opslag(Sheets.Count)
    For i = 2 To Sheets.Count
        If Sheets(i).[a1].Value <> "" Then
            opslag(i) = Sheets(i).[d4].Value
        Else
            opslag(i) = Sheets(i).Name
        End If
    Next i
    For i = 2 To Sheets.Count
        nummer = 2
        verg = opslag(i)
        For j = i + 1 To Sheets.Count
            If opslag(j) = verg Then
                opslag(j) = opslag(j) & "(" & nummer & ")"
                nummer = nummer + 1
            End If
        Next j
    Next i
    
    For i = Sheets.Count To 2 Step -1
        Sheets(i).Name = opslag(i)
    Next i
End Sub

*edit* overigens bestaan er situaties waar dit toch nog tot errors kan leiden, in dat geval is er nog een kleine tussenstap nodig afhankelijk van gebruik en situaties

hey wampier, deze doet het idd! Nice nice.

In je *edit* heb je het over het feit dat er nog situaties zijn waarbij dit tot errors kan leiden. Dewelke had je dan in gedachten?

Thx in advance e man! echt top!

Spiesse
 
Ik heb dat in mijn laatste post aangestipt. Deze code werkt goed met expansie van sheets naar rechts (toevoegen) of als de code slechts 1 keer wordt uitgevoerd.

Indien je de macro meerdere keren uitvoert op dezelfde file en bestaande namen veranderd, in het midden tussenvoegt of juist sheets delete kan het dat je een error krijgt. Dit in verband met het feit dat de sheets altijd op elk moment een unieke naam moeten hebben. Bij oplopende aantallen en toevoegingen rechts gaat dit goed. Bij andere situaties kan dat (eenmalig) een error opleveren.

Je kunt dit compleet voorkomen door de sheets tijdelijk een unieke naam te geven en vervolgens de nieuwe namen pas te overschrijven. Dat is in principe heel eenvoudig en kan ik nog toevoegen als je dat wilt.
 
goh, je mag dit toevoegen als je dat wil. kan idd mss handig zijn. Ik zou niet weten of het bestand uitgebreid moet worden of niet... ik maak dit bestand voor iemand van onze kwaliteitsdienst die statistische gegevens in kaart dient te brengen...

alvast terug bedankt!
 
met de extra stap:

Code:
Sub rename()
Dim opslag() As String
ReDim opslag(Sheets.Count)
    For i = 2 To Sheets.Count
        If Sheets(i).[a1].Value <> "" Then
            opslag(i) = Sheets(i).[d4].Value
        Else
            opslag(i) = Sheets(i).Name
        End If
    Next i
    For i = 2 To Sheets.Count
        nummer = 2
        verg = opslag(i)
        For j = i + 1 To Sheets.Count
            If opslag(j) = verg Then
                opslag(j) = opslag(j) & "(" & nummer & ")"
                nummer = nummer + 1
            End If
        Next j
    Next i
    For i = 2 To Sheets.Count
        Sheets(i).Name = "xspiessex" & "(" & i & ")"
    Next i
    For i = Sheets.Count To 2 Step -1
        Sheets(i).Name = opslag(i)
    Next i
End Sub

tenzij d4 ooit xspiessex bevat zou dit moeten voorkomen dat je errors krijgt bij omzetten
 
spiessexxx, wat zou dat geven? :)

wampier, bedankt voor je hulp! ga deze macro importeren en dan het bestand laten testen en lopen!

ik zet deze dan ook voorlopig op "opgelost"

Groeten en tot een volgende probleemstelling!

Spiesse
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan