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

automatisch nieuw werkblad aanmaken bij nieuw record

Status
Niet open voor verdere reacties.

hel1s

Gebruiker
Lid geworden
14 apr 2011
Berichten
5
Hoi,

Ik ben bezig met een excel bestand en heb ooit eens gehoord dat het op de één of andere manier mogelijk moet zijn om:
als je in één werkblad een nieuw record invoert, excel automatisch een werkblad met de naam van dit nieuwe record aanmaakt.

Ik ga ervanuit dat dit middels een macro moet, maar ben niet zo gevorderd dat me dat lukt.

Hierbij mijn bestand:
Bekijk bijlage werkblad NAWgegevens.xls

Eigenlijk hoop ik dat de mensen die dit lezen hier meer verstand van hebben en mij op weg kunnen helpen.

Groetjes Heleen
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Worksheets.Add after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Target

End Sub

Met vriendelijke groet,


Roncancio
 
Misschien heel dom, maar moet ik toch in de visual basics editor zetten??

Als ik de editor open, moet ik eerst een nieuw blad krijgen om dit in te kopieren, hoe doe ik dit?
 
Het simpelste is om met de rechtermuisknop te klikken op de tabnaam onderaan het scherm.
Vervolgens kies je voor Programmacode weergeven... en zet je daar de code neer.

De code maakt een nieuw tabblad aan zodra er iets in de A-kolom wordt ingevuld.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt door een moderator:
Graag gedaan.
Gaarne nog even de vraag op opgelost zetten.
Bvd.

Met vriendelijke groet,


Roncancio
 
@Roncancio

Zojuist toch nog een glitch in de code gevonden:

Als ik in ieder andere kolom dan kolom A iets toevoeg, maakt de code ook een nieuw werkblad aan. Ook wijzigt die de naam van het nieuw aangemaakte werkblad steeds mee met de laatste wijgiging ik die regel (dus al ik in kolom H een telefoonnummer invoer, wijzigt de naam van het werkblad naar dat betreffende telefoonnummer).

Heb je nog ideeën?
 
Oeps, slordig van mij.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Target
End If
End Sub

Met vriendelijke groet,


Roncancio
 
Is het ook mogelijk om het nieuwe werkblad wat word aangemaakt te baseren op een sjabloon?
 
Ongetwijfeld maar kan je iets specifieker zijn wat je bedoelt?

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt door een moderator:
dit is heel handig!

Ik vroeg me af als ik de cel waarin ik de naam van het nieuwe tablad invoer wil veranderen naar B5 (bijvoorbeeld) hoe doe ik dat dan?

Bovendien vraag ik me af wat er precies gebeurd als je een naam van een werkblad invoert wat al bestaat?
 
Laatst bewerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Foutmelding:
If Not Intersect(Target, Range("B5")) Is Nothing Then
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Target
End If

Foutmelding:
MsgBox "Dit werkblad bestaat al.", vbExclamation, "Werkblad bestaat al."
End Sub

Als de naam al bestaat dan krijg je een melding.

Met vriendelijke groet,


Roncancio
 
Ik heb je code overgenomen, werkt als een trein!

Maar blijkbaar is de eerdere code nog actief, want als ik in kolom a ergens iets in voer, gaat hij een en ander ook uitvoeren....
Ik heb het werkblad opgeslagen, afgesloten, etc. Maar het schijnt niet te helpen..
 
Die actieve code heb ik inmiddels opgelost, maar nu wat anders. Als ik in een cel in kolom B anders dan cell 5 wat invoer krijg ik de foutmelding.
Hij maakt alleen een nieuw werkblad aan, na invoer in cel 5 maar toch.

edit; ook als ik de waarde in die cel wis, voert hij het script uit en maakt hij zelfs een werkblad aan.

Is het ook mogelijk om de invoer aan bepaalde voorwaarden te laten voldoen? Bijvoorbeeld een datum?
 
Laatst bewerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B5")) Is Nothing And IsDate(Target) Then
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Target
End If
End Sub

Met vriendelijke groet,


Roncancio
 
@LuckyD75 Graag een eigen vraag maken. Bovendien is het topic gedateert.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan