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

Kopieëren tabblad

Status
Niet open voor verdere reacties.
@ Bram,

Wat Rudi al schreef plaats Button 1 in cel B19 en de rest gaat dan vanzelf goed.

@ Rudi,

Duidelijke uitleg en een mooi stukje code, zitten weer een paar leuke speeltjes in.

@snb,

Het kopieren van de knop is een leuke mogelijkheid om het zo te doen, maar de knop moet herhaaldelijk naar onderen toe gekopieerd worden, de lijst groeit dus er komen steeds meer knoppen onder elkaar te staan.

Grtz.

P.s.: kan iemand mij vertellen waar dat @ teken voor dient?
 
Het @ teken is gewoon een onderdeel van de Replace-funtie maw elke @ in de string wordt omgezet in een Chr(34) zijnde " . Je kan deze echter niet gewoon in de string zetten omdat je dan foutmeldingen gaat krijgen en je die op deze manier omzeilt

Mvg

Rudi
 
Laatst bewerkt:
Rudi,

Duidelijk, Nee???
Ik begrijp niet wat je bedoelt, maar dat ligt niet aan jou maar aan mij.
Ik ben geen msn-er, forummer, chatter, o.i.d.
Recht toe recht aan, oké maar dan zie ik soms iets en vraag me dan wat af.

Hoe komt dat @ teken er dan in, want ik heb het gewoon erin getypt!!
Niet goed dus:confused:

Grtz. Edwin
 
@edwin

in plaats van het concateneren van afzonderlijke tekstreeksen

"AAA" & chr(34) & "BBB" & vbcr & "CCCC" & application.name

geef ik er de voorkeur aan om 1 tekstreeks te maken, waarvan de niet-alfanumerieke elementen (chr(34), vbcr of obejcteigenschap) worden vervangen. Zeker als ze vaker voorkomen. Kijk voor de lol maar eens in de Access-sectie, hoe daar geworsteld wordt met Query-strings.

dit voorbeeld vertaal ik in:

replace(replace(replace("AAA|BBB~CCC*","|,chr(34)),"~",vbcr),"*",application.name)
De keuze van de te vervangen tekens (in dit geval |, ~ en *) is willekeurig. Het enige criterium is, dat ze niet in niet te vervangen tekstreeks voorkomen.

Terzijde, de aanmaak van knoppen om naar een werkblad te gaan vind ik geen fraaie. Daarvoor heb ik al eens een alternatief gepubliceerd.
Als je wil dat de werkbladwijziging tegelijkertijd een aktivering naar een bepaalde cel is, kan dat volgens mij het eenvoudigst met
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.Goto Sh.[A15]
End Sub

Dan hoef je met je macro ook geen code in een module te zetten.

In mijn optiek hoef je in dit geval dus alleen een werkblad een nieuwe naam te geven (gebruik makend van de ingebouwde controlefaciliteiten van Excel: die hoef je echt niet zelf in te bouwen zoals in deze draad gebeurt). Het nieuwe werkblad wordt gemaakt en de werkbladselector ( in de vorm van een uitklaplijst in een werkbalk) aangepast. Dat is alles.
Daarmee belast je het document minimaal en blijft het ook in omvang (elementen en gekoppelde code) minimaal. Is nooit slecht voor de snelheid.
 
Rudi en snb,

Hoe leg ik dit nu weer uit???

Lees tot het einde dan wordt het duidelijk.

Helaas we praten langs elkaar heen en toch ben ik er blij mee???
Hoezo?
Ik ben er blij mee want de bewuste regel waar jullie het over hebben is mij nu geheel duidelijk geworden.
Code:
 ThisWorkbook.VBProject.VBComponents(.codename).CodeModule.AddFromString Replace(Replace(Replace("Sub wijzig()*Application.GoTo Sheets(@#@).Range(@E13@)*End Sub", "#", .name), "@", Chr(34)), "*", vbCr)
Ik was al aan het uitvogelen wat jullie uitgespookt hadden maar daar kan ik nu mee stoppen want dat gedeelte snap ik nu volledig. Mooie oplossing.
Het langs elkaar heen praten! Sorry maar het @ teken viel precies samen met de code en iets wat hier in het forum gebruikt wordt.

Wat ik bedoelde was:
Als je een bericht terugstuurt zie je regelmatig voor de naam een @ teken staan en die bedoelde ik. SNB, zoals jij in jouw vorige reply stuurde, zie citaat:
@edwin

in plaats van het concateneren van afzonderlijke tekstreeksen

"AAA" & chr(34) & "BBB" & vbcr & "CCCC" & application.name

Waarom is dat?

SNB,

De rest van je verhaal moet ik nog mee aan de slag. Ik ga een testprogje maken en ga met jouw opmerkingen aan de slag en dan kom ik erop terug.

Je hebt overigens wel gelijk als je het hebt over belasten van een excel programma.
Wat ik gemaakt heb is leuk voor een knop of 20 maar worden het er 200, dan gaat het toch aardig fors worden. Rudi had hierin al een betere oplossing want ik maakte iedere keer een nieuwe module aan.

Nogmaals heel vriendelijk bedankt maar weer.

Grtz.
 
@Edwin

die @ is om aan te duiden dat je niet reageert op de vraagsteller, maar op iemand die in de draad reageert.
 
Heren,

Wederom bedankt voor jullie nuttige input en inzet! Ik heb nog 2 probleempjes:
1. Ik krijg het niet voor elkaar met die knop. Ik heb Button 1 in B19 gezet, maar nog komen ze niet mooi onder elkaar. Kan dat met het volgnummer te maken hebben? Ik heb even een prtscreen bijgevoegd.

2. Ik zit nog met dat rare probleem van die specifieke naam. Wanneer ik één specifieke naam invoer voor het tabblad dan gaat alles goed, alleen de nieuwe knop werkt niet. Hij zegt dat de macro niet beschikbaar is, en als ik dan bij macro's kijk staat hij er in als: Module1."naam"
En ik heb ook geen macro die dezelfde naam al heeft, weet iemand waar dit aan kan liggen? Superzeeuw heeft al gezegd dat ik naar deze regel moet kijken:
.InsertLines LineNum, "Sub " & Modulenaam & "()"
Ik heb er naar gekeken, maar weet niet waar ik naar moet zoeken, dus zonder resultaat :confused: Mischien kunnen jullie me wat opweg helpen!

Groeten Bram!:thumb:
 

Bijlagen

Wanneer ik één specifieke naam invoer

Jij kan ons op weg helpen door nu eens te zeggen welke naam, want het is de tweede maal dat je dit zo verwoord. Zonder die informatie hebben wij ook maar enkel het raden.

Mvg

Rudi
 
Jij kan ons op weg helpen door nu eens te zeggen welke naam, want het is de tweede maal dat je dit zo verwoord. Zonder die informatie hebben wij ook maar enkel het raden.

Mvg

Rudi

Dat kan, maar omdat hij dit niet doet in het voorbeeld leek me dit niet uitmaken. Maar de naam is "Biefstuk"

Groeten.
 
Hm helaas, nogsteeds hetzelfde probleem:confused: Ik zou zelf wel wat hebben verknooid in mijn werkmap:(
De plek van de knop is nu wel goed, lag inderdaad aan het volgnummer, ik begon met 0 terwijl het 1 moest zijn, wat dom wat dom:o

Overigens, Rudi waar zijn die userID en Password voor in het tabblad Info?
Alvast bedankt!
Groetjes!
 
Laatst bewerkt:
Dat zijn restanten van een vroeger geïnstalleerde wachtwoordbeveiliging

Mvg

Rudi
 
Halleluja, mijn eigenaardige probleem is opgelost!:D Wanneer je een gedefineerde naam hebt kun je deze op een of andere manier niet gebruiken voor de naam van een nieuw tabblad. Waarom weet ik niet, maar het is zo:p Hier is zeker niks aan te doen?

Groeten!:)
 
Heren,
Ik heb nog één klein probleempje, wanneer ik het tabblad template(uitsnijden) verberg, en een nieuwe sheet aanmaak, eindigt de code niet op de nieuwe sheet maar op de sheet die er na komt. Ik heb dit aan het eind van de code gezet:
Code:
Sheets.(Naam).select
range("A1").select
Dit werkt ook, maar dan krijg ik eerst de volgende sheet te zien, dit is geen ramp maar ik zou het liever niet hebben. Weet iemand het antwoord?:)
 
Als je de code gebruikt uit post #91 kom je automatisch uit op de nieuwe sheet, zelfs met sheet Template( uitsnijden) verborgen nl door

Code:
With Sheets(Naam)
        .Visible = True
        .[E13].Value = Naam
    End With

Mvg

Rudi
 
Hm ik niet, ik kom dan op het blad info. Ook als ik het bestand tabblad kopieeren 008 gebruik.. Voor de duidelijkheid, in dat voorbeeld is het blad uitsnijden de template als ik het goed begrepen heb..

Grts
 
Ik heb ook nog een probleem met de beveiliging. Wanneer ik het blad Template beveilig, kan ik geen nieuwe sheet aanmaken omdat de cel waar de naam in komt ook beveiligd is. Deze zou ik liever beveiligd houden.. Weet iemand hier een oplossing voor, er zit als het goed is al een groot gedeelte in de huidige code?

Groeten bram!
 
Beveilig je blad Template. Wijzig dan volgend stukje code
Merk op dat paswoord hetzelfde is als voor blad Hoofdmenu
Code:
With Sheets(Naam)
        .Unprotect Password:=UnlockCode
        .Visible = True
        .[E13].Value = Naam
        .Protect Password:=UnlockCode
    End With

Mvg

Rudi
 
Werkt super! Bedankt!:)

Nu de volgende uitdaging (volgens het voorbeeld):
Ik wil de inkoopprijs via het hoofdmenu aan kunnen passen, zodat snel de kostprijs is te zien zonder eerst naar de berekening te gaan. Nu heb ik dit stukje code: (zonder volgnumer ed, dat komt nog)
Code:
    With Sheets(Naam)
        .Unprotect Password:=UnlockCode
        .[C10].Formula = "=hoofdmenu!F1"
        .Protect Password:=UnlockCode
    End With

Dit werkt, maar omdat ik ook veschillende (nieuw aan te maken) "subhoofdmenu's" heb, weet ik niet hoe ik "hoofdmenu" zou moeten aanduiden in de formule. Kan dit mischien via een verwijzing naar de naam van de sheet waarvanaf de macro zich start?


Alvast bedankt!:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan