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

Macroknop moet 2 bladen kopieren en naam wijzigen

Status
Niet open voor verdere reacties.

rovano

Gebruiker
Lid geworden
4 jan 2008
Berichten
23
Ik zit met het volgende probleem:

Sinds een paar weken ben ik mij aan het verdiepen in VBA en met behulp van internet kom ik al een eind in de goede richting, maar ik mis diepere kennis over de verschillende mogelijkheden.

in bijgevoegd voorbeeld heb ik een opname formulier en een uitwerkblad.
De knop "unit toevoegen" vraagt om de naam van een nieuwe unit en kopieert vervolgens het blad Opname Formulier en wijzigt de naam van het blad, door de naam van de unit er aan toe te voegen. Tot zover gaat het goed.....
Het is mijn bedoeling dat de naam van het Opname Formulier aangevuld wordt met de naam in cel C4 en dat het blad Uitwerking de naam van cel C4 krijgt (dus Opname Formulier A1000 met daarnaast het blad A1000
Echter wil ik ook dat het blad Uitwerking gekopieerd wordt en de naam gewijzigd wordt in alleen de unitnaam. Als ik die handmatig kopieer dan wordt in de code de naam van het nieuwe uitwerkblad niet aangepast (blijft dus Worksheet "uitwerking" ipv Worksheet "A1000"

Ook de invulvelden moeten dan leeg gemaakt worden.
In mijn voorbeeld gebeurt dat alleen op het oorspronkelijke blad en niet op het gekopieerde blad.


Waar ga ik fout?

Groet,
Rob
 

Bijlagen

  • voorbeeld2.xlsm
    490,5 KB · Weergaven: 27
rovano,

doet dit wat je wilt:
Code:
Private Sub CommandButton1_Click()
Unit = InputBox("Geef volgende unit, bijvoorbeeld A1000", "Unit toevoegen")
Sheets("Opname Formulier").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Opname Formulier " & Unit
ActiveSheet.Range("C4") = Unit
Range("C8:C9,D14:D94").ClearContents
Sheets("Uitwerking").Copy After:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = Unit
End Sub
 
Hallo Haije,

Bedankt voor de reactie, het uitwerkblad wordt nu ook mee gekopieerd! Maar de invulvelden worden nu nog steeds overgenomen naar het nieuwe blad en alleen op het oorspronkelijke blad worden die invulvelden gewist.

Verder zoek ik nog een oplossing voor de andere issues in mijn vraag.

Ik merk nu dat ik nog een foutje in blad uitwerking heb staan: de unitnaam moet ook overgenomen worden uit het Opname Formulier, net zoals dat nu ook in de overige cellen (C5 t/m C11) het geval is.

Groet,
Rob
 
gemakkelijker voor de helpers ( en ook voor u ) is het als alle kleurtjes in de bladen weg zijn en enkel de cellen die ingevuld overgenomen moeten worden in een kleur te zetten, later kan je dan terug de cellen kleuren zoals je wil
 
Hoeveel van deze units ben je van plan om toe te gaan voegen? Het wordt namelijk 1 grote puinhoop. (je gaat ook het Change Event mee kopiëren)
 
Meestal zijn het niet meer dan 10 units, maar ik ben ook wel eens een klant tegen gekomen met 80 units.
Tot nu toe heb ik alles met de hand gekopieerd, maar ik ben nu een oplossing aan het bedenken om het middels VBA te doen.

Groet,
Rob
 
Jij denkt vanuit de opmaak. Bedenk eens of jij de gegevens is een tabelvorm kan invoeren. Misschien dat iemand het een leuke uitdaging vindt om 80*2 kopien te maken en alle verwijzingen en andere ellende goed te zetten. Maar ik zie het nut niet.
 
Al eens gedacht hoe je alle formules gaat laten werken in de nieuwe bladen? En het verbergen van rijen?
 
De 2 bladen zijn aan elkaar gekoppeld en staan los van de te kopieren bladen. Dus als ik in het opnameformulier iets invul, komt dat daarna alleen in het blad uitwerking (welke naam gewijzigd wordt in de invoer van cel C4), het moet dus niet doorgevoerd worden naar de andere bladen.
Ik zoek dus een manier om de naam van het blad uitwerking variabel te maken in de VBA-code.
Nu staat in de VBA-code van het Opname Formulier, nog de naam Worksheet "uitwerking". Dit moet dus gewijzigd worden naar Worksheet "cel c4"
 
Dan zal om te beginnen alle samengevoegde cellen moeten verwijderen.
 
brengt dit je verder?

Code:
bladnaam=Range("C4").value
Sheets(bladnaam).select
 
YES.
dat zocht ik inderdaad. Bedankt Haije!!

Alleen de invulvelden die ik grijs gemaakt heb worden nog niet gewist, dit gebeurt nog op het oude blad.
Ik heb in het voorbeeld bestand de samengevoegde cellen los gekoppeld en de code aangepast.
Ik heb nu 3x een unit toegevoegd en je ziet dat als ik het type verander, dit alleen mee verandert op het juiste blad.

Verder zie ik nu ook dat ik een stukje formule die in de cellen in het uitwerkblad staan (die de waardes overnemen uit het opnameformulier), zal moeten opnemen in de VBA-code, maar daar zal ik wel uitkomen.
 

Bijlagen

  • voorbeeld3.xlsm
    655,1 KB · Weergaven: 19
Alleen de invulvelden die ik grijs gemaakt heb worden nog niet gewist, dit gebeurt nog op het oude blad.

kun je wat specifieker aangeven welke cellen op welk blad je gewist wilt zien, die nu NIET gewist worden?
 
in de VBA-code staat dat de cellen C8 en C9 en de cellen D14 tot en met D94 gewist moeten worden.

Dit moet gebeuren op het nieuw toegevoegde blad, maar gebeurt nu op het blad waarin ik op de knop Unit toevoegen klik (dus als ik op blad Opname Formulier R3333 sta en voeg unit R4444 toe middels de knop unit toevoegen, dan worden de cellen C8:C9 en D14:D94 op blad R3333 gewist maar niet op blad R4444)
 
maak van
Code:
Range("C8:C9,D14:D94").ClearContents

eens
Code:
ActiveSheet.Range("C8:C9,D14:D94").ClearContents
 
je weet toch dat D14:D94 formules zijn die je wil wissen op blad R4444?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan