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

Do while loop neemt niet alle gegevens mee

Status
Niet open voor verdere reacties.

richardbakker

Gebruiker
Lid geworden
9 mrt 2010
Berichten
44
Hallo,

Ik heb een database met 76 Kolommen en 120.000 rijen.
Alle 120 duizend rijen zijn in de eerste kolom voorzien van een EAN nummer.

Deze database verberg ik in Excel en hiernaast begin ik een zelfgemaakte analyse. Ik heb een keuzevak gegenereerd waar het assortimentsnummer
geselecteerd kan worden door de gebruiker (In kolom 81, rij 2). Als dit matcht met de geselecteerde rij (i) in kolom 31, dan moet hij het desbetreffende EAN nummer vanuit kolom
1 kopiëren naar rij p in kolom 78. Dit tot aan het einde van de database, dus rij 120.000.

Alles leek goed te gaan, probleem is echter dat hij lang niet alle waarden meeneemt, terwijl het wel degelijk matcht met de gestelde criteria uit de do while loop.

Ik gebruik deze code:

Sub Haaldataop()
Sheets("Database").Range("BZ8:CA10000").ClearContents

Dim i As Long
Dim p As Long

i = 2
p = 8


Do While Cells(i, 31).Value <> ""

If Cells(i, 31).Value = Cells(2, 81).Value Then
Cells(p, 78).Value = Cells(i, 1).Value

i = i + 1
p = p + 1

Else

i = i + 1

End If

Loop

End Sub


Er komen ook geen lege cellen voor in kolom 1, waardoor de loop tot een eind zo kunnen komen. Er wordt geen foutmelding gegeven oid.
Ziet iemand wellicht een fout in mijn code? Als daar geen fout in zit, dan zou het aan mijn bestand moeten liggen. Dan zou ik gevoelige informatie even eruit moeten snijden en hier even uploaden.

Alvast bedankt voor de hulp!:thumb::thumb:
 
Ik heb het inmiddels opgelost! echter loop ik nog tegen 1 fout aan.

Ik heb een macro geschreven welke rijen moet verwijderen als er in kolom 2 '999999999999' voorkomt.
Echter doet hij dit niet in één keer, soms moet er wel 5x worden geklikt voordat ze er allemaal uit zijn..

Voorbeeld nu wel toegevoegd!
 

Bijlagen

Ik werk inderdaad met de code van boven naar beneden. Ben echt een beginner nog met VBA, krijg het met de link ook niet werkend.
In principe zou mijn code toch moeten volstaan zou je zeggen? nap niet waarom hij getallen welke true zijn bij de if stelling, soms wel en soms niet overslaat...
 
veronderstel 2 rijen na elkaar moeten verwijderd worden.
Met je loop verwijder je de 1e rij.
Hierdoor schuiven de onderstaande rijen 1 rij omhoog.
Dan verhoog je je teller 1 met 1 zodat je in de daar op volgende loop in de daar onderstaande rij komt te staan.
Gevolg, de 2e rij is niet netjes gedeleted.
Verwijder eens die i=i+1 wanneer je in je IF-tak die rij delete

Dit was exact het probleem! Super dom van mijzelf. Thanks voor jullie hulp!!

EDIT: Nu wil ik dezelfde VBA code gebruiken, maar de gegevens heb ik nu in een tabel geplaatst. Nu verwijdert hij alle inhoud van de tabel? Om de rows te verwijderen heb ik als code gebruikt: [tabel3].Rows.Delete
Iemand enig idee waarom dit fout gaat?
 
Laatst bewerkt:
De truuk is inderdaad om achteruit te werken:
Code:
Sub Verwijder_gesaneerd()
    Dim i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
        If Cells(i, 2).Value = 999999999999# Or Cells(i, 79).Value = 9999999# Then
           Rows(i).Delete
        End If
    Loop
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan