Toon posts:

[EXCEL - Visual Basic Macro] Overloop foutmelding

Pagina: 1
Acties:
  • 4.551 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Voor een opdracht moet ik een groot aantal gegevens sorteren. Het gaat om een herontwerp van een fabriek. Relevante gegevens staan in een database, hieruit heb ik een tabel gekopieerd naar Excel. Reden hiervoor is dat ik wel eens eerder met Macro's en Excel gewerkt heb, maar nog nooit met Access. :X

Uit een tabel met alle productiegegevens heb ik alle producten gehaald, met daarachter het totale volume van dat artikelnummer en de routing langs de machines.

Hierna wil ik alle producten met een volume van bijvoorbeeld 50 of groter naar sheet2 kopieren (met de routing en alle andere gegevens erbij, zeg maar de hele rij). Hier komt het probleem, Excel geeft een "Overloop" error. Op OK klikken en verder gebeurt er niets.

Hier is de code van de macro:


Sub Selectie_relevante_producten()

'kopieren producten boven volumedrempel

Dim C As Integer
Dim P As Integer
Dim kolom As Integer

C = 2
P = 2

While P < 1863
If Worksheets("sheet1").Cells(P, 7).Value > 50 Then
kolom = 2
While kolom < 10
Worksheets("sheet2").Cells(C, kolom).Value = Worksheets("sheet1").Cells(P, (kolom + 4)).Value
kolom = kolom + 1
Wend
P = P + 1
End If
C = C + 1
Wend


End Sub


Probleem is dus de overloop error, deze komt uit het if statement. Deze heb ik namelijk verwijderd (met het commentaar teken ervoor) en dan kopieert Excel alle gegevens naar blad 2, dus zoals bedacht. Het automatisch niet kopieren van een record met een te laag volume is zo niet mogelijk.

handmatig selecteren op volume en dan alles onder de 50 verwijderen kan ook, maar ik denk dat ik ergens een dom foutje maak waardoor dit niet werkt. 8)7

Wie heeft een idee waar dit fout gaat?

Verwijderd

Het ophogen van P staat op de verkeerde plaats. De 'P=P+1' moet achter het Endif statement staan omdat het altijd opgehoogd moet worden om naar de volgende rij te gaan, onafhankelijk of de waarde >50 is of niet. Nu blijft de loop 'While P<1863' oneindig doorgaan zodra een waarde kleiner dan of gelijk aan 50 wordt aangetroffen.

[ Voor 6% gewijzigd door Verwijderd op 29-11-2004 21:41 ]


Verwijderd

Topicstarter
D ank je, idd, best een domme fout.. :X