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

Code wijzigen naar flexibeler invoer

Status
Niet open voor verdere reacties.

ewaldmauritz

Gebruiker
Lid geworden
19 okt 2011
Berichten
87
Onderstaande code werkt bijna zoals het zou moeten. Het geeft tabbladen een naam en neemt dat over uit respectievelijk de invoer in G4:G24 of H4:H9. Overigens heb ik dit gedeeltelijk gekopieerd van het forum op worksheet.nl.
Wat ik graag nog anders zou willen is het volgende:
Bij helerange1 (het eerste gedeelte van de code met range G4:G24) worden de tabbladen "Inlogpagina", "Totaaloverzicht", "TJ", "TTH" en "TV" genegeerd. Dit wil ik eigenlijk vervangen door het negeren van tabblad "Inlogpagina" + alle tabbladen met een naam uit H4:H9 (helerange2).
En ook het omgekeerde:
Bij helerange2 (het tweede gedeelte van de code met range H4:H9) wordt het tabblad "Inlogpagina" genegeerd. Dit wil ik eigenlijk vervangen door het negeren van tabblad "Inlogpagina" + alle tabbladen met een naam uit G4:G24 (helerange1).

Hoe moet onderstaande code hiervoor worden gewijzigd?


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsh As Worksheet, r As Range, helerange As Range
    Set helerange1 = Range("G4:G24")
    Set helerange2 = Range("H4:H9")
    If Target.Count = 1 And Not Intersect(Target, helerange1) Is Nothing And Target <> "" Then
        If WorksheetFunction.CountIf(helerange1, 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(helerange1, wsh.Name) = 0 And wsh.Name <> "Inlogpagina" And wsh.Name <> "Totaaloverzicht" And wsh.Name <> "TJ" And wsh.Name <> "TTH" And wsh.Name <> "TV" Then
                    wsh.Name = Target
                    Target.Select
                    Exit Sub
                End If
            Next
        End If
    End If
    If Target.Count = 1 And Not Intersect(Target, helerange2) Is Nothing And Target <> "" Then
        If WorksheetFunction.CountIf(helerange2, 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(helerange2, wsh.Name) = 0 And wsh.Name <> "Inlogpagina" Then
                    wsh.Name = Target
                    Target.Select
                    Exit Sub
                End If
            Next
        End If
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan