Macro voor kopieren tabbladen

Status
Niet open voor verdere reacties.

tombeerke

Gebruiker
Lid geworden
8 jan 2017
Berichten
280
hallo,

Ik zit vreselijk in de knoei met een macro, alsvolgt .....
Ik heb een nieuwe werkmap gemaakt met op tabblad 1, een invulblad (inkooporder)(men kan dit in feite beschouwen als een sjabloon), en mijn werkmap is opgemaakt per maand, kwartaal, enzoverder ....
Op het invulblad heb ik 12 knoppen voorzien voor macro's aan toe te wijzen, elke knop "bv;blad toevoegen aan de maand januari" of blad toevoegen aan de maand maart
ik ben dus in de veronderstelling dat ik 12 verschillende macro's moet aanmaken om dit te kunnen realiseren ....
Maar .... na uren KNOEIEN raak ik er niet uit, ik probeer voor de de maand januari een blad in te voegen voor de reeds aangemaakte tab februari, maar het lukt me niet, de ingevoegde pagina, komt vooraan of achteraan enz enz enz
Ik heb mijn geknoei als voorbeeld meegestuurd.
Ik ben ver van een expert, maar kan iemand me verder helpen, please ...

groetjes
Tom
 

Bijlagen

  • InkoopBoekTemplateBasis.xlsm
    333,2 KB · Weergaven: 199
Zo werkt het met één code voor alle knoppen.

Niet op volgorde, maar zoals ingedrukt en altijd achteraan.
Code:
Sub alle_maanden()
  With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
    If IsError(Evaluate("'" & .Text & "'!A1")) Then
        Sheets.Add(, Sheets(Sheets.Count)).Name = .Text
        Sheets("BASISXLT").UsedRange.Copy Sheets(.Text).Cells(1)
    End If
 End With
End Sub
 
Thx harry, voor de snelle reactie
Ik heb de macro uitgeprobeerd, en idd hij werkt, maar zoals je zelf zei, altijd achteraan en dus niet per maand gerangschikt, en neemt ook de layout niet mee over
Zoals je kunt zien in mijn voorbeeldbestand, zijn er startmaandJanuari, eindmaandjanuari eindkwartaal enzo aangemaakt als "tussenpagina's" (waat in later stadion formules komen die dan weer gekoppeld worden met andere werkmappen

Dus alvast bedankt voor je macro, maar het is niet de ideale oplossing

ps: de tabblad naam wordt na het maken van het tabblad, vervangen door het "prefixnummer" dat wordt opgegeven bij inboeken order

bedankt alvast voor de moeite en tot hoors

Tom
 
Qua layout kan het inderdaad beter.
Zonder de knoppen uiteraard.
Code:
Sub alle_maanden()
  With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
    If IsError(Evaluate("'" & .Text & "'!A1")) Then
        Sheets.Add(, Sheets(Sheets.Count)).Name = .Text
        Sheets("BASISXLT").UsedRange.Copy
        With Sheets(.Text).Cells(1)
          .PasteSpecial xlPasteAll
          .PasteSpecial xlPasteColumnWidths
        End With
    End If
 End With
End Sub
Of:
Code:
Sub hsv()
With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
 If IsError(Evaluate("'" & .Text & "'!A1")) Then
  Sheets.Add(, Sheets(Sheets.Count)).Name = .Text
  Sheets(Array("BASISXLT", .Text)).FillAcrossSheets Sheets("BASISXLT").UsedRange.Cells
  sheets(.text).columns.autofit
 End If
End With
End Sub
 
Laatst bewerkt:
Is al stukje beter waarvoor dank !

Misschien een rare vraag, maar toch

in de macro, kan ik daar nergens een verwijzing inbrengen naar bv tabblad Eindjanuari2017, zodoende de macro weet dat de copie daarvoor moet geplaatst worden, als ik op de knop toevoegen blad januari druk
Nu ben ik verplicht om telkens, handmatig de nieuwe tabbladen achteraan naar voor te slepen, en we spreken hier toch op jaarbasis over +/- 500 tabbladen ?
Of vraag ik nu het onmogelijke :)

ben niet zo een "kei" in vba, maar ik probeer ....

tot hoors

Tom
 
Kan ook.
Code:
Sub hsv()
With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
 If IsError(Evaluate("'" & .Text & "'!A1")) Then
[COLOR=#0000ff]  Sheets.Add(Sheets("Eind" & .Text & "2017")).Name = .Text[/COLOR]
  Sheets(Array("BASISXLT", .Text)).FillAcrossSheets Sheets("BASISXLT").UsedRange.Cells
  Sheets(.Text).Columns.AutoFit
 End If
End With
End Sub
 
Harry,

je bent FANTASTISCH !!!!
Nu ga ik nog wat "foeteren", dat ik de layout, knoppen, enz, allemaal kan meepakken, maar ben al een heel eind geholpen, heb hier uren aan gezwoegd vandaag !

Tot hoors, morgen waarschijnlijk :)

slaapwel

Tom
 
Harry,

Net even je macro bekeken, en lijkt me niet evident om al mijn "toeters en bellen" mee te nemen, alhoewel ik dat bijna noodzakelijk nodig heb, is de rechtse knoppen komen later hyperlinks, zodoende ik tussen mijn werkmappen makkelijk kan scrollen, (de grijze knoppen), en de (groene knoppen) heb ik nodig om te printen, rijen te verbergen enz

Hopelijk heb jij hier meer kaas van gegeten, dan ik :)

tom
 
Met zoiets gaat het beter Tom
Code:
Sub hsv()
 With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
   If IsError(Evaluate("'" & .Text & "'!A1")) Then
     Sheets("BASISXLT").Copy Sheets("Eind" & .Text & "2017")
     ActiveSheet.Name = .Text
   End If
  End With
End Sub
 
thanks Harry

ik ga vandaag proberen en hou je op de hoogte, maar dit weekend druk op de zaak met opendeurdagen, kan dus even duren ik reageer

alvast 10000 maal bedankt voor de ondersteuning

tom
 
Beste harry,

Ik heb zonet je macro getest en werkt prima !
Maar ..... nog een klein vraagske, als ik een blad gekopieerd heb, en wil via deze kopie (opgelet naam van tabblad bv"januari' veranderd in invulcel "p6"), als ik nadien wil nog een tabblad toevoegen, loopt je macro vast (omdat de naam in je macro "basisXLt" natuurlijk niet meer herkend wordt
Dus ik denk, ofwel moet ik steeds na mijn eerste tabblad terugkeren en van daar steeds bladen bijvoegen, of indien dat mogelijk is moet "basisxlt" een variabel veld worden, dat dus op gelijk welk tabbladnaam werkt

snap je mijn uitleg :), is moeilijk te verwoorden he, maar ben al superblij

Ps: zoals ik zei in veld p7 komt een "interne prefix" code, ik heb daarvoor een macro geschreven om via knop "tabbladnaam aanpassen" deze code te laten veranderen ..... Dit kan ook rechtstreeks na "enter" van cel P7, ik heb daar ook aan liggen zoeken en testen, maar ook niet gevonden :), weet jij hoe dat werkt ?

Ik vind het superleuk, opnemen van macro's, en zelf kleine macro's proberen te schrijven, leer elke dag bij, maar is toch niet zo makkelijk he :)

Tot hoors

Tom
 
Beste harry,

Nog een klein "issue", als ik bv via de knop maand januari bijvoeg, en ik ga terug naar "basisxlt", en wil nog blad toevoegen, werkt de macro niet, (ik vermoed dat hij het nie wil doen omdat er al tabblad "januari" aanwezig is, kan da ingesteld worden als "count" +1 ?

bedanktttttttttttt

Tom
 
Uit je vraag met invulveld P6 wordt ik niets wijzer met wat de bedoeling is.
Cel P6 bestaat uit samengevoegde cellen, en dat werkt meestal niet goed samen met Vba.

Hier de code dan maar eerst voor je tabbladen.
Code:
Sub hsv()
Dim sh As Worksheet, y As Long
 With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect
   Sheets("BASISXLT").Copy Sheets("Eind" & .Text & "2017")
     For Each sh In Sheets
      If sh.Name Like .Text & "*" Then y = y + 1
     Next sh
   ActiveSheet.Name = IIf(y = 0, .Text, .Text & " " & y)
 End With
End Sub
 
Harry,

Nieuwe macro ingevoegd, volgende opmerking, als ik van tabblad "basisxlt" knop maand invoer werkt het nu prima, januari, januari 1 enz
Wat ik in feite graag zou bekomen is dat ik van het nieuw ingevoegd tabblad, daar via de knop een extra blad invoeg, na het actieve tabblad

dus ik duw knop januari op "basisxlt", macro plaats "januari" op de juiste plaats !
Duw ik nu op het tabblad "januari" dan krijg ik volgende foutmelding
Sub hsv()
Dim sh As Worksheet, y As Long
With Sheets("BASISXLT").Shapes(Application.Caller).TextEffect (foutmelding in geel hier op deze regel weergegeven)
Sheets("BASISXLT").Copy Sheets("Eind" & .Text & "2017")
For Each sh In Sheets
If sh.Name Like .Text & "*" Then y = y + 1
Next sh
ActiveSheet.Name = IIf(y = 0, .Text, .Text & " " & y)
End With

dus ik moet steeds naar tabblad "basisxlt" om blad toe te voegen, en wil dat in feite kunnen vanuit gelijk welk tabblad waar de knoppen op staan ....

Wat betreft de vraag met cel P7 kom ik later wel op terug (ik heb al wel de cellen niet meer samengevoegd) .... maar das voor later

bedankt alvast

Tom

vba foutmelding.JPG
 
Ik kan gewoon een nieuw tabblad aanmaken met de knoppen in januari 4 (wordt januari 5).

Probeer dit dan maar eens.
Code:
With [COLOR="#0000FF"]activesheet[/COLOR].Shapes(Application.Caller).TextEffect

Ps. gebruik codetags.
 
Laatst bewerkt:
Harry,

Heb macro aangepast, en werkt PERFECT ! waarvoor dank :)

wat nu de cel P7 betreft,
Elk document krijgt een specifiek "internPrefixcode", dat we dus manueel gaan inputten, bedoeling is nu als de cel is ingevuld en we op enter duwen, dat dan de naam van het tabblad automatisch veranderd,
Ik heb dit geprobeerd, maar lukt me niet, daarom heb ik een work around gemaakt, via de groene knop, tabbladnaam aanpassen (dat werkt wel), maar zo handiger zijn als dat dus automatisch na enter cel P7 gebeurd ! (ps: cel P7 is dus niet meer samengevoegd)

thx

Tom
 
In de module van Thisworkbook.
Geldt voor alle tabbladen.

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 If Target.Address = "$P$6" And Target.Count = 1 And Target <> "" Then Sh.Name = Target.Value
End Sub
 
Harry,

Super, alles werkt fantastisch, nu kan ik verder bouwen aan de andere werkmappen, als ik kom vast te zitten, kom ik hulp vragen via deze weg :)

Hartelijk bedankt, voor de fijne ondersteuning

Tom
 
Harry,

Ik was in testfase, en kom uit op een onverklaarbare RARITEIT :) .... de "tekstvelden/knoppen" met benaming januari tot december, had ik allemaal mooi toegewezen aan macro hsv
wat gebeurt er nu, raar maar waar, de toewijzingen verspringen, naar bv macro printstock ?
kan ik dat misschien ontlopen door een extra module aan te maken waar de macro van hsv alleen in staat ? (Ga dat direct proberen)

groetjes

Tom
 
Harry,

net geprobeerd om je macro in aparte module te plaatsen, maar geeft zelfde effect, als ik eerst alle 12 velden mooi toewijs aan macro hsv, en ik voeg bladen toe vanuit "basisxlt", als ik druk januari, oke, februari, oke, maart dat op onverklaarbare wijze zit daar ineens een andere macro in "printstock"

mvg

Tom
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan