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

Opgenomen macro "dynamischer "maken.

Status
Niet open voor verdere reacties.

erpee

Gebruiker
Lid geworden
21 jan 2009
Berichten
118
Ik heb een macro opgenomen, werkt goed.
Echter diezelfde macro moet, steeds iets gewijzigd, op andere plekken in de sheets voorkomen.

Variabelen: (herhalen zich door de macro heen)
  • Het stuk "Groep 1" moet variabel zijn. (of groep 2 óf groep 3).
  • De "B" moet variabel zijn, de nummers blijven steeds hetzelfde.


Hoe is de macro zo aan te passen, dat door gebruik van variabelen, de macro op alle plekken inzetbaar wordt?

Code:
Sub Kopieer_data()
'
' Kopieer_data Macro
'

' Maandag
    Sheets("Groep 1").Select 'het stuk "Groep 1" moet variabel zijn. (of groep 2 óf groep 3)
    Range("B4:B12").Select  'De "B" moet variabel zijn, de nummers blijven steeds hetzelfde
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("C5").Select
    ActiveSheet.Paste

' Dinsdag
    Sheets("Groep 1").Select
    Range("B15:B23").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("D5").Select
    ActiveSheet.Paste

' Woensdag
    Sheets("Groep 1").Select
    Range("B26:B34").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("E5").Select
    ActiveSheet.Paste

' Donderdag
    Sheets("Groep 1").Select
    Range("B37:B45").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("F5").Select
    ActiveSheet.Paste

' Vrijdag
    Sheets("Groep 1").Select
    ActiveWindow.SmallScroll Down:=12
    Range("B48:B56").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("G5").Select
    ActiveSheet.Paste

' Naam plaatsen
    Sheets("Groep 1").Select
    Range("B47").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
 
je zou met input box kunnen werken
of verwijzen naar een cel waar je de juiste waardes in zet.
 
Een voorbeeld bestandje doet worderen.
Begin maar met alle overbodige selects en activate uit je code te halen, dat heen en weer gehuppel tussen de bladen is nergens voor nodig.
VB voor vrijdag.
Code:
Sub dotch()
'Vrijdag
    Sheets("Groep 1").Range("B48:B56").Copy
    Sheets("Leerling").Range("G5").PasteSpecial
Application.CutCopyMode = False
End Sub
Doet net hetzelfde als
Code:
Sub Bah()
' Vrijdag
    Sheets("Groep 1").Select
    ActiveWindow.SmallScroll Down:=12
    Range("B48:B56").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Leerling").Select
    Range("G5").Select
    ActiveSheet.Paste
End Sub
Application.CutCopyMode = False is maar éénmaal nodig in een macro, normaal net boven End Sub.
 
Of:
Code:
Sub dotch()
'Vrijdag
    Sheets("Leerling").Range("G5:G13") = Sheets("Groep 1").Range("B48:B56").Value
End Sub
 
Laatst bewerkt:
Met de aangedragen suggesties heb je blijkbaar niets gedaan. Wat je er mee wil is mij ook niet echt duidelijk. In mijn optiek kan je beter vanuit de tab 'Leerling' werken. Kies in C1 een groep en in C2 een leerling. Let er wel op dat je consistent bent in de namen van de groepen en bladnamen. groep2 <> groep 2.
 

Bijlagen

Laatst bewerkt:
Met de aangedragen suggesties heb je blijkbaar niets gedaan.
Klopt, wilde zo snel mogelijk even een voorbeeld posten.

Maar ... super ... Dit is precies wat ik bedoel!
 
Laatst bewerkt:
@VenA

ik heb nu een prachtig voorbeeld wat werkt zoals ik het precies wil maar nu wil ik het namaken in de daadwerkelijke sheet (en begrijpen wat er gebeurt...)

1. Ik heb de programmmacode overgezet
2. in de administratie heb ik op de namenlijst een filter gezet (dacht dat dit de bedoeling was)
3. de namen van de groepen zijn nu consistent.
4. Bij de Leerlingtab kan ik de eerste gegevensvalidatie begrijpen.

Hoe krijg ik nou die 2e gegevensvalidatie? (ik denk dat ik bij stap 2 iets fout doe waardoor dit niet lukt.)
 
2. in de administratie heb ik op de namenlijst een filter gezet (dacht dat dit de bedoeling was)
Heb je er ook een tabel van gemaakt? Staat de 1e validatielijst nog wel C1?
 
De vraag is dus: Wat moet ik doen om die 2e validatielijst in C2 te krijgen? Wat heb jij daar neergezet?
Ik kan het bestand wel opsturen maar dan weet ik nog niet wat je gedaan hebt? Wil het zelf graag begrijpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan