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

ingevoerde waarden kopiëren naar overzicht

Status
Niet open voor verdere reacties.

digicat

Gebruiker
Lid geworden
28 okt 2004
Berichten
91
Op werkblad1 worden een aantal keer per dag verkoopsgegevens ingevoerd in een schermformulier (KASSA IN): datum – productcode – betaalwijze – ordernummer – bedrag.
Deze gegevens moeten gekopieerd worden naar werkblad2 om een overzicht te krijgen.

Hoe pak ik dat best aan?
Wie stuurt mij een stukje code om:
- de cellen op werkblad1 te selecteren en te kopiëren
- die waarden te plakken op Werblad2 in de correcte kolom en daar op de eerste lege rij

Mijn kennis van VBA code is vrij beperkt.
Het bijgevoegde voorbeeldbestand maakt alles wellicht veel duidelijker.
 

Bijlagen

Sub Macro1()
Dim Rij As Integer
Rij = 2
Do While Worksheets("Moederbord").Cells(Rij, "A") <> ""
Rij = Rij + 1
Loop
Worksheets("Moederbord").Cells(Rij, "A") = Worksheets("KASSA IN ").Range("C3")
Worksheets("Moederbord").Cells(Rij, "B") = Worksheets("KASSA IN ").Range("C11")
Worksheets("Moederbord").Cells(Rij, "C") = Worksheets("KASSA IN ").Range("C9")
Worksheets("Moederbord").Cells(Rij, "D") = Worksheets("KASSA IN ").Range("C5")
Worksheets("Moederbord").Cells(Rij, "E") = Worksheets("KASSA IN ").Range("C7")
End Sub
 
Ik krijg foutmelding bij uitvoeren van de macro:
Fout 9: het subscript valt buiten bereik.
De macro wordt onderbroken bij de regel:
Worksheets("Moederbord").Cells(Rij, "A") = Worksheets("KASSA IN ").Range("C3")

Enig idee wat er fout loopt?
 
Er zat een spatie teveel in de naam van het werkblad KASSA IN.
Nu doet de macro het wel.

Sub Macro1()
Dim Rij As Integer
Rij = 3
Do While Worksheets("Moederbord").Cells(Rij, "A") <> ""
Rij = Rij + 1
Loop
Worksheets("MOEDERBORD").Cells(Rij, "A") = Worksheets("KASSA IN ").Range("C3")
Worksheets("MOEDERBORD").Cells(Rij, "B") = Worksheets("KASSA IN ").Range("C11")
Worksheets("MOEDERBORD").Cells(Rij, "C") = Worksheets("KASSA IN ").Range("C9")
Worksheets("MOEDERBORD").Cells(Rij, "D") = Worksheets("KASSA IN ").Range("C5")
Worksheets("MOEDERBORD").Cells(Rij, "E") = Worksheets("KASSA IN ").Range("C7")
End Sub
 
Nog een kleine typ fout :
Als nog een spatie zet tussen KASSA en IN werkt de macro wel.


Pierre
 
Laatst bewerkt:
Ik heb de naam van het werkblad veranderd in KassaIn (zonder spaties) en ook in code de spaties weggenomen.
De macro werkt perfect
met één eigenaardigheid die ik niet kan verklaren:
de ingevoerde datum is 17-02-2006
wordt na uitvoeren van de macro op werkblad MOEDERBORD plots 18-02-2010

Nog kleine uitbreiding wenselijk:
Op werkblad MOEDERBORD is kolom toegevoegd BEDRAG2
Als invoer voor betaalwijze CASH of BON is moet het bedrag in kolom BEDRAG1 geplaatst worden, anders in kolom BEDRAG2

Ik leer intussen ook allerlei bij over VBA code, zodat ik daarna zelf kan aanpassen voor andere gelijkaardige situaties.
Zou eigenlijk dringend een cursus VBA moeten volgen, maar de tijd ontbreekt momenteel.
 
Laatst bewerkt:
Sub Macro1()
Dim Rij As Integer
Rij = 3
Do While Worksheets("MOEDERBORD").Cells(Rij, "A") <> ""
Rij = Rij + 1
Loop
Worksheets("MOEDERBORD").Cells(Rij, "A") = Worksheets("KASSAIN ").Range("C3")
If Worksheets("KASSAIN ").Range("C9") = "CASH" Or Worksheets("KASSAIN ").Range("C9") = "BON" Then
Worksheets("MOEDERBORD").Cells(Rij, "B") = Worksheets("KASSAIN ").Range("C11")
Else
Worksheets("MOEDERBORD").Cells(Rij, "C") = Worksheets("KASSAIN ").Range("C11")
End If

Worksheets("MOEDERBORD").Cells(Rij, "D") = Worksheets("KASSAIN ").Range("C9")
Worksheets("MOEDERBORD").Cells(Rij, "E") = Worksheets("KASSAIN ").Range("C5")
Worksheets("MOEDERBORD").Cells(Rij, "F") = Worksheets("KASSAIN ").Range("C7")
End Sub
 
De macro werkt perfect>.
Eén mysterie blijft:
de ingevoerde datum is vb 20-02-2006
wordt gekopieerd als 21-02-2010
Rarara???
Dat is exact 4 jaar erbij: 4*365+1 schrikkeldag!
Als ik de opmaak voor de invoerdatum op STANDAARD zet, wordt het wel correct gekopieerd!
 
Volgens mij is het mysterie nu opgelost. Ik heb de macro aangepast en nu krijg ik ook op je werkblad de juiste datum.

Sub Macro1()
Dim Rij As Integer
Rij = 3
Do While Worksheets("MOEDERBORD").Cells(Rij, "A") <> ""
Rij = Rij + 1
Loop
Worksheets("MOEDERBORD").Cells(Rij, "A") = Format(Worksheets("KASSAIN ").Range("C3"), "dd-mm-yyyy")
If Worksheets("KASSAIN ").Range("C9") = "CASH" Or Worksheets("KASSAIN ").Range("C9") = "BON" Then
Worksheets("MOEDERBORD").Cells(Rij, "B") = Worksheets("KASSAIN ").Range("C11")
Else
Worksheets("MOEDERBORD").Cells(Rij, "C") = Worksheets("KASSAIN ").Range("C11")
End If

Worksheets("MOEDERBORD").Cells(Rij, "D") = Worksheets("KASSAIN ").Range("C9")
Worksheets("MOEDERBORD").Cells(Rij, "E") = Worksheets("KASSAIN ").Range("C5")
Worksheets("MOEDERBORD").Cells(Rij, "F") = Worksheets("KASSAIN ").Range("C7")
End Sub
 
Perfect.
Dank je wel Roncancio!
Ik moet dringend aan de slag met een cursus VBA. Dan kan ik dit soort dingen zelf oplossen misschien.
Excel kan ongelofelijk veel met functies en macro's, maar van zodra je wat complexere dingen wil automatiseren, wordt VBA onvermijdbaar.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan