Gegevens automatisch kopieren naar een andere sheet in excell met VBA

Status
Niet open voor verdere reacties.

nessler

Gebruiker
Lid geworden
31 mei 2005
Berichten
54
Hoi,

Ik zit met het volgende probleem in ons laboratorium...

In excel vullen we een aantal cijfers in op een eerste sheet, genaamd "Invulformulier".

De cijfers worden ingevuld in de cellen gaande van G10 tot G28,
en deze worden tot nu toe telkens manueel gekopieerd en geplakt
in de tweede sheet van het zelfde werkboek, "Overzicht" genaamd,
en dit in de cellen C3 tot C21, D3 tot D21, E3 tot E21 enz.

Telkens er een nieuwe analyse gebeurd komen de cijfers dus in een andere kolom te staan.
En nu zouden we graag hebben dat dit automatisch gebeurd, telkens er een analyse gebeurd dat de
cijfers vanzelf in de eerstvolgende lege kolom komen.

Ik weet dat dit mogelijk zou zijn met een visual basic script, maar daar ik er
totaal geen ervaring mee heb en niet weet waar te beginnen had ik gehoopt
dat jullie me konden helpen hierbij...

Alvast bedankt !
 
Gegevens naar andere sheet overhalen

Zoiets misschien?? :)

Code:
Sub GegevensOverhalen()
'
'    Voorwaarde is dat het Werkblad waar de gegevens worden ingevuld "Invulformulier" heet, en dat
'    Het Werkblad waar de gegevens neer gezet worden "Overzicht" Heet.

'    In de cel G10 van het Werkblad "Invulformulier" moet bij het overzetten van de gegevens
'    altijd een waarde worden ingevuld, dit omdat er op deze plek in het werkblad "Overzicht"
'    word bepaald of hier de nieuwe set gegevens kan worden neer gezet. Met andere woorden word deze niet gevuld dan
'    worden de laatste set gegevens, bij de volgende keer dat er gegevens worden overgezet, in het Overzicht overschreven.

    Dim rngInvullijst As Range
    Dim rngOverzicht As Range
            

    Set rngInvullijst = Worksheets("Invulformulier").Range("G10:G28")
    Set rngOverzicht = Worksheets("Overzicht").Range("C3:C21")
    
             Do Until rngOverzicht.Cells(1) = ""

                   Set rngOverzicht = rngOverzicht.Columns(1 + 1)

             Loop
                
             rngOverzicht.Value = rngInvullijst.Value
        
     
    
End Sub
 
Laatst bewerkt:
Het lijkt er op, maar dan zit ik met het probleem dat enkel maar de cijfers in c3:c21 komen te staan.

De eerstvolgende analyse zou uit zichzelf op D3:D21 moeten komen te staan,
de daaropvolgende op E3:E21 enz.

Ik ben ondertussen ook gaan zoeken op andere forums en dit kan naar het schijnt met de functie LastCol.

Ook hier snap ik weer geen bal van dus alle hulp is welkom.
Is het trouwens ook mogelijk om deze actie te laten uitvoeren door bv.
CTRL+S in te drukken, of door middel van een "button" ?


Dit is trouwens het stukje code dat ik heb gevonden op de andere website,
dat ik heb proberen aanpassen

Code:
Sub GegevensOverhalen()

    Dim SourceRange As Range, DestRange As Range
    Dim DestSheet As Worksheet, Lc As Long

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    'fill in the Source Sheet and range
    Set SourceRange = Sheets("Invulformulier").Range("G10:G28")

    'Fill in the destination sheet and call the LastCol
    'function to find the last column
    Set DestSheet = Sheets("Overzicht")
    Lc = LastCol(DestSheet)

    'We make DestRange the same size as SourceRange and use
    'the Value property to give DestRange the same values
    With SourceRange
        Set DestRange = DestSheet.Cells(3, Lc + 1) _
                        .Resize(.Rows.Count, .Columns.Count)
    End With
    DestRange.Value = SourceRange.Value

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

End Sub
 
Laatst bewerkt door een moderator:
Als je een nieuwe analyse hebt ingevoerd moet je idd weer deze code laten draaien, dan worden de gegevens in de cellen naast de vorige gegevens, in overzicht, gezet.

Ik weet niet wat je anders onder automatisch verstaat maar code kan je laten draaien door hem aan een sneltoets te hangen of een knop te maken of hem event controlled maken.

Dus wil je geen knop of sneltoets gebruiken is onderstaand misschien een optie??

Als je deze code in het werkblad "Invulformulier" hangt en de andere procedure Public maak, zal hij vragen(na het veranderen van de laatst in te vullen cel G28 ) of je de gegevens wil overzetten.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim intMelding As Integer
    Dim rngLaatsteInvoer As Range
    
    Set rngLaatsteInvoer = Range("G28")
    
    If Target.Address = rngLaatsteInvoer.Address Then
    
        intMelding = MsgBox("Druk op OK om de gegevens naar Overzicht te plaatsen", vbOKCancel, "GegevensOverzetten")
        
        If intMelding = 1 Then
            GegevensOverhalen
        
        End If
        
    End If


End Sub

Wat je ook kan doen is de gegevens in Access zetten, dan zijn dit soort dingen wat eenvoudiger.

Wat betreft de functie LastCol die is bij mij onbekend misschien was het een zelfgeschreven functie?????? anders weet ik het ook niet.:cool:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan