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

Snel en veel cellen kopieren van tabel via VBA

Status
Niet open voor verdere reacties.

conceal

Gebruiker
Lid geworden
29 mrt 2007
Berichten
73
Hi,

Voor een programma wil ik graag data kopieren naar een andere sheet, zodat de originele data bewaart blijft. Ik kopieer nu cel voor cel, wat bij een tabel van 255 bij 255 cellen een eeuwigheid duurt. Ik ben dus op zoek naar een methode waarbij ik snel een range kan kopieren, zonder dat ik van tevoren weet wat dit range zal zijn. De code die ik nu gebruik is deze (en via deze weg weet ik welke range gebruikt wordt):

Code:
Sheets("Input").Select
inputrijen = Cells(10, 2).End(xlDown).Row
inputkolommen = Cells(10, 2).End(xlToRight).Column


For i = 1 To inputrijen
    For j = 1 To inputkolommen
        Sheets("test").Cells(i, j) = Sheets("Input").Cells(i + 9, j + 1)
    Next j
Next i

Alvast bedankt!!!

Groet,
Maikel
 
Code:
Sheets("Input").Range("B10", Sheets("Input").Range("B10").End(xlDown).End(xlToRight)).Copy Sheets("test").Cells(1)

Wigi
 
Hi Wigi,

Bedankt voor je antwoord! Ik heb geprobeerd op analoge wijze dit bereik te vermeningvuldigen maar dit lukt me niet... :o
Hoe moet ik snel een heel bereik vermeningvuldigen met -1? Alvast bedankt!!!

Groet,
Maikel

P.s. Het programma met het algoritme is bijna klaar...
 
Code:
Sub VanTekenVeranderen()
    Application.ScreenUpdating = False
    With Range("IV1").End(xlToLeft).Offset(, 1)
        .Value = -1
        .Copy
        Range("A1:B20").PasteSpecial xlValues, xlMultiply
        .ClearContents
    End With
    Application.ScreenUpdating = True
End Sub

Verander Range("A1:B20") nog.

Wigi
 
conceal zei:
Ik ben dus op zoek naar een methode waarbij ik snel een range kan kopieren, zonder dat ik van tevoren weet wat dit range zal zijn.
Hier begrijp ik uit dat de range elke keer dat je wil kopiëren kan verschillen van de vorige keer (of begrijp ik dat verkeerd?).
Als dat juist is, dan kun je elke gewenste range snel naar het blad "test" kopiëren als volgt:

Selecteer handmatig de range die je wil kopiëren, en voer dan dit macrootje uit:
Code:
Sub macro1()
Selection.Copy Sheets("test").Range("A1")
End Sub
 
Hi zapatr,

Het eerste antwoord van Wigi was waarnaar ik opzoek was. Hierbij hoef ik niks handmatig te selecteren, juist omdat ik wil dat het programma dat overneemt. Ik weet alleen waar mijn originele data begint, maar niet waar het eindigt. Vandaar. Niettemin toch bedankt voor je antwoord!

Groetjes,
Maikel
 
conceal,
Er was tussen ons sprake van een spraakverwarring.
Ik ging er vanuit dat ook het beginpunt van kopiëren telkens kon verschillen, vandaar dat ik ervoor koos om het te kopiëren gebied handmatig te bepalen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan