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

autonummering

Status
Niet open voor verdere reacties.

k.tseeg

Gebruiker
Lid geworden
3 jul 2006
Berichten
22
Met een macrootje copieer ik uit verschillende sheets regels naar een nieuwe sheet.
Nu wil ik graag een kolom toevoegen die automatisch nummers toevoegd, dus bv regel 4 is mijn eerste 'dataregel' en daar moet dan 1 komen, zo oplopend tot de laatste dataregel (dat is random) waar dan het hoogste nummer moet staan.
alvast bedankt
Fank
 
Probeer deze eens:

Code:
Sub regelnummers()
Dim c As Range
Dim laatsteregel As Integer

Application.ScreenUpdating = False

laatsteregel = Range("B" & Rows.Count).End(xlUp).Row

    For Each c In Range("B4", "B" & laatsteregel)
        If c <> "" Then
            If c.Row = 4 Then
                c.Offset(, -1) = 1
            Else
                c.Offset(, -1) = c.Offset(-1, -1) + 1
            End If
        End If
    Next

Application.ScreenUpdating = True

End Sub

Groet,
Ferenc

ps. is wel handig om volgende keer een voorbeeld file bij te voegen dan kunnen we daar de code op los laten. En scheelt weer wat tijd met zelf een voorbeeld maken om code aan op te hangen.
 
Laatst bewerkt:
Ferenc

dit

Code:
Sub regelnummers()
Dim c As Range
Dim laatsteregel As Integer

Application.ScreenUpdating = False

laatsteregel = Range("b" & Rows.Count).End(xlUp).Row

    For Each c In Range("B4", "B" & laatsteregel)
        If c.Value <> "" Then c.Offset(, -1) = c.Row - 4 + 1
    Next

Application.ScreenUpdating = True

End Sub

is beter.

Je maakt een fout bij

Code:
c = Range("B4")

Dit vergelijkt de inhoud van 2 cellen.

Je bedoelt eigenlijk:

Code:
c.Address = Range("B4").Address

Ik zou dat laten en de kortere methode gebruiken.

Wigi
 
Wigi,

Bedankt, kwam er zelf ook achter tijdens testen met verschillende invoeren.
Klopt dat in mijn eerste code als er een zelfde getal in kolom B stond als in cel B4 dan werd dit ook 1. Heb hem nu aangepast voor leer doeleinden.

Jouw code is zeker compact (volgens mij zou je de value waarde ook nog wel kunnen laten)
Ik kreeg de controle als er in A4 nog niks stond niet voor elkaar.

De Row functie is mij wel weer wat gestegen in gebruikers gemak.

Bedankt.

Pettig weekend,
Ferenc
 
laatsteregel moet ook een Long zijn, en geen Integer. Maar je kan die weglaten.

Als je voor compacte code gaat:

Code:
Sub regels()
Dim c As Range
Application.ScreenUpdating = False
    For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks)
        c.Offset(, -1) = c.Row - 3
    Next
Application.ScreenUpdating = True
End Sub

Wigi
 
Die is wel erg lekker, das al snel 50% winst op mijn code.:thumb:

Daar moet ik ook naar toe....... We are on the case.


Ferenc
 
heren, heren
wat een enthousiasme op mijn vraag,echter ik krijg het niet aan de gang
een simpel voorbeeld: data in B3:B10 Nu moet in A3:A10 automatisch de getallen 1tm 8 komen. Maar de volgende keer kan het B3:B12 zijn. Dan dus 1 tm 10 in A3:A12
Ik hoop dat dit voorbeeld e.e.a.verduidelijkt.
Groet Frank
 
Code moet gewoon werken met de code die Wigi heeft gegeven.

Post je bestande je eens .
Misschien gaat er iets niet goed met het plaatsen van de code.


Groet,
Ferenc
 
Kan ook met formule

=ALS(AANTALARG(A1);INDEX(B:B;RIJ()-1)+1;"")
Deze met vulgreep doortrekken naar beneden
A1 is rij waar gegevens in staan
B:B is rij waar opvolgnummers in staan(moet wel aan eengesloten zijn)
 
Hoi Wigi,
Ik heb het werkend (ben nog wel echt een amateur hoor) maar nu het volgende. In de kolom A begint de telling op -2 in A:1. Hoe je dat kan veranderen heb ik inmiddels door. Op A:4 staat dus het getal 1. Dit is prima echter de getallen -2 naar 0 zouden er niet hoeven staan. (onderdrukken?) Ten tweede kan ik in de B kolom geen data kwijt. Dan geeft hij een fourmelding. Ik heb in de code niet kunnen vinden waar ik dat kan aanpassen opdatcolom B ook data kan bevatten. Ik hoop dat je nog 1 keer aan deze amateur je kennis te kunnen overdragen.
Groet Frank
 
Dat zal ik doen, maar kan je eens het bestandje bijhangen (maak eerst een kopietje, en dan evt. enkel kolom A en B, de rest mag weg). Dat is voor ons heel wat gemakkelijker.

Wigi
 
Bijgevoegd een excelbestandje. Op de sheet totaal data staat alle data. Op de geselecteerde data sheet staat geselecteerde data uit de totaal data sheet. Dit wordt via een (niet bijgevoegde) code gedaan. Nu wil ik graag dat er op de geselecteerde data sheet te beginnen op A:5 het getal 1 komt en dan zo oplopend op A:8 het getal 4. De cel waar 1 komt te staan is wel altijd de zelfde (A:5). Waar de data reeks eindigd (nu A:8) wisseld afhankelijk van de beschikbare data.
Gr Frank
 

Bijlagen

Zoiets?

Code:
Sub regels()
Dim c As Range, l As Long
Application.ScreenUpdating = False
l = 1
    For Each c In Range("B5:B" & Range("B" & Rows.Count).End(xlUp).Row)
        If IsEmpty(c) = False Then
            c.Offset(, -1) = l
            l = l + 1
        End If
    Next
Application.ScreenUpdating = True
End Sub

Wat was dat van het niet kunnen ingeven van data uit je vorige posts?

Wigi
 
Bij de vorige code die ik van je kreeg krijg ik een foutmeldind als er data in de kolom B staat. Als ik die leeg laat en bij kolom c begon was het goed.
Overigens, wat belangrijker is de laatste code die ik van je gekregen hebt. Deze voldoet prima en is percies wat ik nodig heb. Ik plak deze aan mijn reeds werkende code om daarna weer verder te knutselen.
Bedankt voor de inspanning
Frank
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan