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

Blad opslaan in Excel

Status
Niet open voor verdere reacties.

petervv19

Gebruiker
Lid geworden
3 apr 2008
Berichten
53
Ik heb een excel document waarbij het de bedoeling is dat hier een aantal vragen worden beantwoord. Hierna zou ik willen dat je onderaan op een (opslaan) knop kan klikken waarna excel het ingevulde blad als een nieuw blad, in dezelfde sheet, opslaat. Op deze manier kan je op het eerste blad elke keer de vragen invullen en bouw je 1 document op waarin elke keer de vragen in beantwoord zijn.

Bekijk bijlage checklist.xlsx
 
Hallo Peter,

Misschien moet je een betere naam verzinnen voor je gekopieerde blad.
De naam van het werkblad wordt nu de actuele tijd.
Code:
Sub hsv()
If IsError(Evaluate("'" & Time & "'!A1")) Then
   Sheets("checklist").Copy , Sheets(Sheets.Count)
   ActiveSheet.Name = Format(Time, "hhmmss")
 End If
End Sub
 
Druk Alt+F11.
Menu Invoeren → Module → grote witte vlak.
Code uitvoeren door Alt+F8 of aan een knopje hangen.
 
Ik heb het even uitgewerkt in je voorbeeld.
Vul ten minste een naam in in C4 en klik 'indienen'.
 

Bijlagen

Kijk super! Dit is wat ik zocht.
Nadat je op indienen hebt geklikt dan plaatst hij hem als laatst blad. Is het ook mogelijk dat hij gelijk na het blad 'Checklist' geplaatst wordt?
 
Code:
Sheets("checklist").Copy , Sheets("checklist")
 
Is het ook mogelijk dat hij gelijk na het blad 'Checklist' geplaatst wordt?
Verwijder de rode regel uit de programmatekst:
Code:
Sub tsh()
    Application.ScreenUpdating = False
    With ActiveSheet
        If .Range("C4") = "" Then Exit Sub
        On Error Resume Next
        .Name = Range("C4")
        If Err.Number = 1004 Then .Name = .Range("C4") & "_" & Sheets.Count()
        On Error GoTo 0
        .Buttons(1).Delete
        [COLOR="#FF0000"].Move After:=Sheets(Sheets.Count)[/COLOR]
    End With
    With Sheets("Sjabloon")
        .Visible = True
        .Copy Before:=Sheets(1)
        .Visible = False
    End With
    ActiveSheet.Name = "CheckList"
    Application.ScreenUpdating = True
End Sub
Er zit een verborgen werkblad "Sjabloon" in de werkmap. Als je wijzigingen wilt aanbrengen in het formulier moet je dit werkblad eerst zichtbaar maken. Voer de gewenste wijzigingen door en maak het werkblad weer onzichtbaar.
 
Gevonden en dat werkt inderdaad :-)

Maar dit was een voorbeeld van hoe ik het wil gaan doen. Ik zal het formulier nog verder moeten gaan aanpassen en gaan inrichten zoals ik het daadwerkelijk wil hebben. Moet ik dan elke keer elke wijziging op het blad (in dit geval) 'checklist' en in het sjabloom moeten aanpassen?
 
Gevonden en dat werkt inderdaad :-)

Maar dit was een voorbeeld van hoe ik het wil gaan doen. Ik zal het formulier nog verder moeten gaan aanpassen en gaan inrichten zoals ik het daadwerkelijk wil hebben. Moet ik dan elke keer elke wijziging op het blad (in dit geval) 'checklist' en in het sjabloom moeten aanpassen?

Ik heb hem al door. Ik kan het blad koppieren, hernoemen en weer onzichtbaar maken.
 
Wat is alleen het verschil met alleen de code van HSV?
Ik snap dat je bij die van Timshel een sjabloom hebt waar hij elke keer naar terug keert. Maar in welke situatie gebruik je eerder een sjabloom en wanneer alleen de code?
 
In (verborgen) werkblad "Sjabloon" leg je het ontwerp van het formulier vast, en alleen daar.

Het formulier wordt ingevuld. Als je een ingevuld formulier indient krijgt dit werkblad een nieuwe naam. Vervolgens wordt "Sjabloon" gekopieerd, hernoemd naar "Checklist" en heb je weer een leeg formulier op basis van je ontwerp. Zoek anders eens op google naar het begrip sjabloon (eng: template), want wat ik hier uitleg is wel essentieel.
Sjabloon = ontwerp. Checklist = invullen.
 
De code van HSV maakt alleen een kopie van het ingevulde formulier en geeft dat werkblad een nieuwe naam.
Hij beperkt zich tot de kern van de vraag, als ik het zo inschat. Je zou zijn macro eens kunnen proberen.

Edit: Nog een gratis tip. Als je de ingevulde formulieren nog verder verwerkt in Excel raad ik aan zo min mogelijk gebruik te maken van samengevoegde cellen in je ontwerp. Samengevoegde cellen zijn de geschaarde vrachtwagens op de snelweg van je gegevensverwerking.
 
Laatst bewerkt:
Na wat testen loop ik toch nog tegen een probleem aan en hoop ik dat jullie hier ook wederom een super oplossing voor hebben.

Als je in C4 nu de datum invult en je kiest voor indienen, dan maakt hij er netjes een apart blad van met als blad naam de datum. Als ik toevallig hem dezelfde dag nog een keer invullen, dan maakt hij er ook nu weer netjes een apart blad van, maar hij geeft deze als naam _3 en hoe vaker ik het doe hoe hoger het getal.

Kan ik er ook op een manier voor zorgen dat hij er het volgende van maakt 20-04-2016_1 en dan verder tellen?
 
Laatst bewerkt:
Yes, dat is het. Dat werkt super.
Ik had zelf al wat geprobeerd, maar nu ik de code heb bekeken had ik dit nooit voor elkaar gekregen.

Mijn dank is GROOT.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan