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

cellen automatisch nummeren met vba

Status
Niet open voor verdere reacties.

adile

Gebruiker
Lid geworden
2 mrt 2014
Berichten
202
goedemiddag,

Ik heb een sheet waarin ik in cellen A24:A1022 1 t/m 999 heb staan.

Deze sheet wil ik kunnen resetten. wanneer ik op de knop reset druk moeten deze cellen weer de juiste cijfers hebben.

dat kan met

Range("A24") = "1"
Range("A25") = "2"
Range("A26") = "3"
Range("A27") = "4"
Enz...

Is er een formule die dit makkelijker maakt want nu moet ik dit 999 keer doen en wordt het bestand heel traag gereset.

Alvast bedankt

Adile
 
Kijk zo eens

Code:
Sub tel()
Set c = Range("A24")
For i = 1 To 999
c.Value = i
Set c = c.Offset(1, 0)
Next
End Sub
 
Zonder lusje

Code:
Range("A24:A1022") = [Row(A1:A999)]
 
Heren,

Dank voor jullie input,Ik heb ze alle drie uitgeprobeerd,
ze werken allemaal alleen de codes van Cobbe en mvw64 werken heel traag. zo'n 2 min.
en de code van VenA werkt direct. die ga ik gebruiken.

Adile
 
Natuurlijk is de oplossing van VenA perfect en de enig juiste.
Maar dat mijn code 2' in beslag neemt durf ik toch te betwijfelen, ik denk dat je met je PC naar de computerboer moet,
of je gebruikt nog de Commodore V20. :)
 
De code uit #2 doet er bij mij 1/10 seconde over.
 
Ik heb hem op een andere pc getest daar duurde het 45 seconden. Maar het maakt niet uit want de oplossing is er toch.
 
Beste mensen,

Hier is standaardfunctionaliteit voor.

Handmatig:
type 1 in A24, kies op het Startmenu rechts het icoontje met het pijltje naar beneden ("doorvoeren"), kies reeks....
reeks in kolommen, type lineair, intervalwaarde 1, eindwaarde 999, OK.

VBA-equivalent:
Edit: ook eerst 1 in A24 typen.
Code:
Sub AFMB()

    Range("A24").AutoFill Range("A24:A1022"), xlLinearTrend

End Sub
 
Laatst bewerkt:
Alternatieve code (ook weer met 1 in A24); deze is nog beter equivalent met de handmatige oplossing in post #9.
Code:
Sub AFMB()

    Range("A24:A1022").DataSeries xlColumns, xlDataSeriesLinear, , 1, 999

End Sub
 
MarcelBeug,

Wat is het verschil tussen jouw codes en de code van VenA want die werkt eigenlijk al perfect?

Adile
 
Zoals ik al aangaf: mijn codes maken gebruik van functionaliteit die standaard in Excel beschikbaar is.
Vaak is dat sneller, zo ook hier.

Dat is met 1000 regels niet te merken, daarom heb ik even een testje gedaan met 100x uitvullen van 1 tot 50000, en dan doet:
de code van VenA er bij mij ruim 15 seconden over,
mijn code in post #9 (met AutoFill) nog geen 2,5 seconden en
mijn code in post #10 (met DataSeries) ruim 2,5 seconden.

Kortom de standaardfunctionaliteit is zo'n 6 keer sneller dan de code van VenA, waarvoor overigens alle respect: hier heb ik ook weer wat van geleerd. :thumb:

De testcode (waarbij ik telkens 1 methode activeerde en de andere 2 tot commentaar degradeerde).
(Merk op dat bij DataSeries alleen het startveld hoeft te worden opgegeven en niet de hele range (daar is de eindwaarde voor); dit als kleine aanpassing van de code in post #10).
Code:
Sub testFill()

    Dim i%
    Dim s As Double, e As Double
    Application.ScreenUpdating = False
    
    s = Timer
    For i = 1 To 100
        'Range("A24:A50023") = [Row(A1:A50000)]
        Range("A24").AutoFill Range("A24:A50023"), xlLinearTrend
        'Range("A24").DataSeries xlColumns, xlDataSeriesLinear, , 1, 50000
    Next i
    e = Timer
    Application.ScreenUpdating = True
    
    MsgBox "Dit duurde " & e - s & " seconden."
    
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan