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

Tabbladnamen wijzigen

  • Onderwerp starter Onderwerp starter Maik
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Maik

Gebruiker
Lid geworden
20 dec 2005
Berichten
81
Er is al heel wat geschreven over het wijzigigen van tabbladnamen en toch kom ik er nog niet uit.
Het gaat om het volgende.
Ik heb een tiental tabladen in gebruik zeg blad 6, blad 7, blad 8 t/m 16 met een vaste opmaak.
Op tabblad "invul" staan in de kolom a6:a16 namen welke ik als naam van tabblad 1 t/m 10 zou willen zien, deze namen wijzigen echter regelmatig.
Dus zodra de inhoud van a6 op tablad "invul" wijzigt zal de naam van( tab)blad 6 overschreven moeten worden.

Groet,
Maik
 
Is het niet gewoon zo dat je rechtermuisknop op de tabbladen doet.
En dan naam wijzigen.
Of bedoel je dit niet.
Greetsz Thooms
 
Ja ik heb net eens exel bij me opgestart.
ALs ik een naam van een tabblas wil wijzigen kan ik gewoon rechtermuisknop > naam wijzigen. en dan kan ik een gewenste naam in typen.
Dit is dus niet het geval bij jou?
Misschien moet je updates draaien van microsoft office?
Greetsz Thooms
 
Als je onderstaande code bij ThisWorkbook zet, krijgen de werkbladen automatisch de naam van hetgene in cel A6 t/m A16 staat.

Code:
Private Sub Workbook_Open()
For WS = 2 To 12
    Worksheets(WS).Name = Worksheets("Invul").Cells(WS + 4, "A")
Next
End Sub

Ik tel overigens 11 werkbladen die van naam veranderen blad 6 t/m blad 16.

Met vriendelijke groet,


Roncancio
 
Thooms, Ron,

Je moet het je zo voorstellen.

Er is een bereik met namen van tabbladen in. Blad 6 tot en met Blad 16. Vanaf dat daar nu iets in wijzigt, moet het overeenkomende blad ook in naam wijzigen, en wel moet de nieuwe naam zijn wat ingetypt werd.

Dus niet manueel, en ook niet bij het opstarten van het bestand.

Ron,

ik weet ook niet of deze redenering lukt:

For WS = 2 To 12

Als het blad "invul" er ergens tussen zit, gaat dat ook veranderen. (ben niet zeker).

Maik

straks hopelijk een oplossing. Ik zal al zeggen dat je met een Worksheet change event moet werken.

Wigi
 
Helemaal geweldig Wigi, het werkt perfect.
Nog 1 vraag over de naamgeving, de tabbladen krijgen nu de naam van de inhoud van de cellen A6 t/m A16, precies zoals ik wilde, is het mogelijk om naast deze naam standaard "DRUKOPDRACHT" mee te geven.
Dus als in cel A6 staat "Den Helder", dan zou tabblad 6 moeten heten "DRUKOPDRACHT Den Helder".

Groet, Maik
 
Helemaal geweldig Wigi, het werkt perfect.
Nog 1 vraag over de naamgeving, de tabbladen krijgen nu de naam van de inhoud van de cellen A6 t/m A16, precies zoals ik wilde, is het mogelijk om naast deze naam standaard "DRUKOPDRACHT" mee te geven.
Dus als in cel A6 staat "Den Helder", dan zou tabblad 6 moeten heten "DRUKOPDRACHT Den Helder".

Groet, Maik

Maik

Hier is de aangepaste code. Heb het vrij elegant opgelost vind ik.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsh As Worksheet, r As Range, helerange As Range, str As String
    str = "DRUKOPDRACHT"
    Set helerange = Range("A6:A16")
    If Target.Count = 1 And Not Intersect(Target, helerange) Is Nothing And Target <> "" Then
        If WorksheetFunction.CountIf(helerange, Target) > 1 Then
            MsgBox "Deze naam bestaat al." & vbCr & vbCr & _
                "Je kan geen 2 tabbladen dezelfde naam geven.", vbCritical + vbOKOnly
            Target.ClearContents
            Exit Sub
        Else
            For Each wsh In ThisWorkbook.Worksheets
                If WorksheetFunction.CountIf(helerange, Replace(wsh.Name, str & " ", "")) = 0 And wsh.Name <> "invul" Then
                    wsh.Name = str & " " & Target
                    Target.Select
                    Exit Sub
                End If
            Next
        End If
    End If
End Sub

Indien "DRUKOPDRACHT" om de één of andere reden wijzigt, verander dat dan bovenaan in de toewijzing van DRUKOPDRACHT aan de string str. Dan wordt het telkens meegenomen in de code.

Wigi
 
Top Wigi,

Mag ik nog een keer misbruik van je kennis maken?
Is het mogelijk om indien er geen naam in cel A7 staat om het tabblad dan 7 of blad 7 of DRUKOPDRACHT 7 te noemen? En voor cel A8 op het tabblad 8, blad 8 of DRUKOPDRACH 8 enz.

Groet,
Maik
 
Mag ik nog een keer misbruik van je kennis maken?

Dit is je derde vraag, dus de laatste voor vandaag...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsh As Worksheet, r As Range, helerange As Range, str As String
    str = "DRUKOPDRACHT"
    Set helerange = Range("A6:A16")
    With Target
        If .Count = 1 And Not Intersect(Target, helerange) Is Nothing Then
            If .Value = "" Then
                .Value = .Row
            End If
            If WorksheetFunction.CountIf(helerange, Target) > 1 Then
                MsgBox "Deze naam bestaat al." & vbCr & vbCr & _
                    "Je kan geen 2 tabbladen dezelfde naam geven.", vbCritical + vbOKOnly
                Target.ClearContents
                Exit Sub
            Else
                For Each wsh In ThisWorkbook.Worksheets
                    If WorksheetFunction.CountIf(helerange, Replace(wsh.Name, str & " ", "")) = 0 And wsh.Name <> "invul" Then
                        wsh.Name = str & " " & .Value
                        .Select
                        Exit Sub
                    End If
                Next
            End If
        End If
    End With
End Sub

Het deeltje in bold is nieuw. Maak de cellen ook op met linkse uitlijning, dan misstaat een getal niet.

Wigi
 
Laatst bewerkt:
Toevoeging.

Ik bedoel als er reeds iets in de cel gestaan heeft om dan na het leeg maken met de bovenstaande waarden te komen.
 
Wigi,

Het leegmaken dmv de delete button werkt wel maar geeft echter eerst de foutmelding "kan de naam van het blad niet wijzigen in de naam van een ander blad, een opgeroepen objectbibliotheek of een werkmap die wordt gebruikt door Visual Basic." na wegklikken van de melding werkt het.
Bij gebruik van de spatiebalk werkt het 1 keer daarna de melding deze naam bestaat al.

Groet,
Maik
 
Je ziet toch wat het probleem is?

De lege cellen geven een foutmelding omdat je de naam van een tabblad wijzigt in een lege string. (dus "niets"). Dan protesteert Excel.

Als je elk blad associeert met een cel, en dan twee keer dezelfde naam neemt (een spatie) dan kan je niet meer uitmaken wat bij wat hoort.

Wigi
 
Laatst bewerkt:
ik weet ook niet of deze redenering lukt:

For WS = 2 To 12

Als het blad "invul" er ergens tussen zit, gaat dat ook veranderen. (ben niet zeker).
Niet bij stilgestaan.:confused:
Ik begrijp eigenlijk uberhaupt niet dat ik de de event Workbook_Open gebruik ipv WorkSheet_Change iod.:shocked: :eek:
Ik heb eerlijk gezegd niet verder kunnen kijken naar de topic.

Hoe dan ook. Als de vraag maar opgelost is.

Met vriendelijke groet,


Roncancio
 
Wigi,
heel erg bedankt voor je hulp, op de foutmeldingen bij lege cellen zal ik zelf wat moeten verzinnen.
groet,
Maik
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan