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

Nieuw tabblad maken op basis van de inhoud van 2 cellen en hier cellen in vullen

Status
Niet open voor verdere reacties.

Advanm

Gebruiker
Lid geworden
24 jun 2014
Berichten
25
Hoi,

Ik heb een werkblad waarbij ik op basis van een cell inhoud een nieuw tabblad maak met de volgende code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Target
End If
End Sub

Nu heb ik nog een veld waarbij een keuze kan worden gemaakt. Hoe kan ik een nieuw tabblad maken op basis van de invul cel en de keuze cell waarbij het nieuwe tabblad de naam krijgt van de 2 cellen samen?
Het 2de keuze veld staat in een andere kolom.
 

Bijlagen

Laatst bewerkt:
Probeer het zo eens:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C:D")) Is Nothing Then
        If Target.Column = 3 And Target.Offset(, 1) <> "" Then
            Sheets.Add , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Value & " " & Target.Offset(, 1).Value
        End If
        If Target.Column = 4 And Target.Offset(, -1) <> "" Then
            Sheets.Add , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Offset(, -1).Value & " " & Target.Value
        End If
    End If
End Sub
 
Laatst bewerkt:
Hoi,

Ik krijg dan een error, ik heb even een voorbeeldje toegevoegd.
 
Je vraag wijkt af van de te realiseren situatie. Buiten dat, het teken ':' mag niet in de naam van tabblad staan dus 'Afdeling:' mag niet.
Heb het maar zo gedaan:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C9", "E9")) Is Nothing Then
        If Target.Address = "$C$9" And Target.Offset(, 2) <> "" Then
            Sheets.Add , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Value & " " & Target.Offset(, 2).Value
        End If
        If Target.Address = "$E$9" And Target.Offset(, -2) <> "" Then
            Sheets.Add , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Offset(, -2).Value & " " & Target.Value
        End If
    End If
End Sub
 
Hoi,

Is het op deze manier ook mogelijk om ipv een nieuw werklad te maken een copie te maken van een bestaand werkblad en deze te renamen naar de cell inhoud van beide cellen?
 
Ja
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C9", "E9")) Is Nothing Then
        If Target.Address = "$C$9" And Target.Offset(, 2) <> "" Then
            [COLOR="#FF0000"]Sheets("NAAM TABBLAD").Copy[/COLOR] , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Value & " " & Target.Offset(, 2).Value
        End If
        If Target.Address = "$E$9" And Target.Offset(, -2) <> "" Then
            [COLOR="#FF0000"]Sheets("NAAM TABBLAD").Copy[/COLOR] , Sheets(Sheets.Count)
            ActiveSheet.Name = Target.Offset(, -2).Value & " " & Target.Value
        End If
    End If
End Sub
 
Hoi

Als ik deze code aan een button hang dan krijg ik een error, bij de 1ste regel, hoe kan ik deze aanpassen dat er een nieuw tabblad wordt gemaakt als ik op de button klik op basis van de inhoud van deze 2 cellen?
 
Ja dat klopt, want daar is het ook niet voor gemaakt.
Misschien volgende keer iets dieper op doordenken, want je huidige vraag wijkt sterk af van je origineel gestelde vraag...

Commandbutton (ActiveX)
Code:
Private Sub CommandButton1_Click()
    If Range("C9, E9").Value <> "" Then Sheets("TABNAAM").Copy , Sheets(Sheets.Count) Else: Exit Sub
    ActiveSheet.Name = [C9] & " " & [E9]
    Range("C9,E9").Value = ""
End Sub

Formulierelement:
Code:
Sub Spaarie()
    With Sheets(1)
        If .Range("C9, E9").Value <> "" Then Sheets("TABNAAM").Copy , Sheets(Sheets.Count) Else: Exit Sub
        ActiveSheet.Name = .Range("C9").Value & " " & .Range("E9").Value
        .Range("C9,E9").Value = ""
    End With
End Sub
 
Hoi,

Ik had daar inderdaad beter over moeten nadenken, ik heb nu een invul tabblad waar ik die button heb gemaakt. ALs ik deze code gebruik wordt het laatste tabblad gerenamed.

Ik wil met een button een nieuw tabblad maken op basis van de inhoud van 2 cellen.

Als dit tabblad al bestaat wil ik een melding dat deze al bestaat.
 
Probeer dit eens
Code:
Sub Spaarie()
    With Sheets("Invul sheet")
        If .Range("C9,E9").Value <> "" Then
            n = .Range("C9").Value & " " & .Range("E9").Value
            For Each sh In Sheets
                If sh.Name Like n Then
                    MsgBox "Tabblad bestaat reeds.", vbExclamation, "Bestaat al"
                    .Range("C9,E9").Value = ""
                    Exit Sub
                End If
            Next
            Sheets("Productie").Copy , Sheets(Sheets.Count)
            ActiveSheet.Name = .Range("C9").Value & " " & .Range("E9").Value
            .Range("C9,E9").Value = ""
        End If
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan