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

code blijft doordraaien en stopt niet

Status
Niet open voor verdere reacties.
Finch,

jou code doet het weer. Gewoon goed he !!!

het laatste probleempje

VerwijderFaxnummers


Deze staan in vb op de rijen 4 /5 /6 en dan 13/14/15 en 21/22/23

telkens met zelfde stap. tot einde blad

code zoiets als: ( opgelet deze draait niet ) dus graag correctie of andere code.
Code:
Sub VerwijderFaxnummers()

Dim StartRij As Long

Dim lngRow As Long
Dim BeginDeleteKolom As Long
Dim EindeDeleteKolom As Long

StartRij = 5 'dit is de beginrij vanwaar de code moet lopen
EindeRij = 7
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden



For lngRow = StartRij To ActiveSheet.UsedRange.Rows.Count Step RijVerschil
    Range(Cells(lngRow, BeginDeleteRow), Cells(lngRow, EindeDeleteRow)).Delete Range(Cells(lngRow + 1, BeginCopyKolom), Cells(lngRow + RijVerschil - 1, EindeCopyKolom))
    Application.CutCopyMode = False
Next lngRow

End Sub
 
Deze keer een iets ander opzet. Om te deleten moet je vanonderuit beginnen en dan naar boven werken. Daarom moet je nu niet de startrij ingeven, maar de eindrij.

Code:
[FONT="Courier New"]Sub VerwijderFaxnummers()

Dim Eindrij As Long
Dim RijVerschil As Long
Dim DeleteBlok As Long

Eindrij = 23 'dit is de laatste rij die moet verwijderd worden
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden

DeleteBlok = Eindrij

Do Until DeleteBlok < 3

    ActiveSheet.Rows(DeleteBlok & ":" & DeleteBlok - 2).Delete xlUp
    DeleteBlok = DeleteBlok - RijVerschil
Loop

End Sub[/FONT]

De 3 in de regel Do Until DeleteBlok < 3 kan je ook nog veranderen naar een andere waarde, hier stopt hij met uitvoeren wanneer je vanaf regel 3 rijen wilt verwijderen.
3 is het minimum, want je moet ook 2 rijen ervoor verwijderen, en anders krijg je een getal dat excel niet herkend als geldig rijnummer.
 
Finch,

kan deze laatste code die draait ook starten ( of eindigen ) op lijn 5
 
Finch,

kan deze laatste code die draait ook starten ( of eindigen ) op lijn 5

Dat kan, maar dan moeten we de eindrij berekenen, want we moeten bij het verwijderen van onder naar boven werken, anders krijgen we fouten.

Code:
[FONT="Courier New"]Sub VerwijderFaxnummers()

Dim EindRij As Long
Dim RijVerschil As Long
Dim lngRow As Long
Dim StartRij As Long

StartRij = 5 'dit is het rijnummer waar we beginnen
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden
EindRij = ((Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0) - 1) * RijVerschil) + StartRij

For lngRow = EindRij To StartRij Step -RijVerschil
    ActiveSheet.Rows(lngRow & ":" & lngRow + 2).Delete xlUp
Next lngRow

End Sub[/FONT]


Laat maar horen wat je van deze code vindt.
 
bij deze code haalt hij de eerste 3 rijen telkens weg.

het zouden telkens de 4de 5de en 6 rij oeten zijn
 
bij deze code haalt hij de eerste 3 rijen telkens weg.

het zouden telkens de 4de 5de en 6 rij oeten zijn

Op je test bestand (test2.xls) doet hij het hier anders ok. Heb je de correct beginrij ingesteld?
 
op het testbestand draait de code

Bij def. bestand loopt ze vast op

Code:
((Round(ActiveSheet

bestand te lang ?? totaal aantal rijen = 10286

start op lijn 8 = 1ste fax nr
 
Code:
Sub VerwijderFaxnummers()

Dim EindRij As Long
Dim RijVerschil As Long
Dim lngRow As Long
Dim StartRij As Long
Dim a As Long

StartRij = 5 'dit is het rijnummer waar we beginnen
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden
a = Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0)
MsgBox a

EindRij = ((Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0) - 1) * RijVerschil) + StartRij

msgbox eindrij
End Sub

Run bovenstaande code eens, en laat weten wat getal je in de msgboxen tevoorschijn ziet komen. Dus twee getallen neerzetten.
 
foutmelding blijft

Code:
[a = Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0)/CODE]


compileerfout 
sub  of function niet gedefinieerd  !!


Code draait dus niet !!!!  dus ook gn MSG box
 
Laatst bewerkt:
foutmelding blijft

Code:
[a = Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0)/CODE]


compileerfout 
sub  of function niet gedefinieerd  !!


Code draait dus niet !!!!  dus ook gn MSG box[/QUOTE]


vreemd :shocked:

post hier de code eens EXACT hoe je ze in je VBE hebt staan. Want ik gebruik hier nu normaal dezelfde code, en deze geeft geen enkele foutmelding.

Bestaat er ook geen mogelijkheid om het bestand zelf te posten of te mailen, ik ben er van overtuigd dat dit sneller gaat werken.
 
code :


Code:
Sub VerwijderFaxnummers()

Dim EindRij As Long
Dim RijVerschil As Long
Dim lngRow As Long
Dim StartRij As Long
Dim a As Long

StartRij = 8 'dit is het rijnummer waar we beginnen
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden
a = Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0)
MsgBox a

EindRij = ((Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0) - 1) * RijVerschil) + StartRij

MsgBox EindRij
End Sub


kan de boel ook mailen , maar is een zwaar bestand
 
fout in office 2000


kan hem strak nog even testen in 2003

alvorens hem op te sturen (zal dan pas na 21.00 uur zijn )


Andere mogelijkheid is misschien om de code te splitsen en te laten lopen tot halverwege

bereik van lijn ... tot ....

Zie je daar iets in
 
fout in office 2000


kan hem strak nog even testen in 2003

alvorens hem op te sturen (zal dan pas na 21.00 uur zijn )


Andere mogelijkheid is misschien om de code te splitsen en te laten lopen tot halverwege

bereik van lijn ... tot ....

Zie je daar iets in

daar ligt volgens mij de fout niet. Het lijkt zoals jij het beschrijft dat de round functie problemen oplevert.

PS noteer mijn mailadres even, want ik verwijder hem dadelijk uit mijn post.
 
en snel.


op office 2003

krijg ik volgende bij jou gestelde vraag :
Code:
Run bovenstaande code eens, en laat weten wat getal je in de msgboxen tevoorschijn ziet komen. Dus twee getallen neerzetten.

eerste getal 8192
tweede getal 65536


heb je hier iets aan ???
 
indien AE is "" dan verwijder rij ; loop ??

Finch,

jou originele code

Code:
Sub VerwijderFaxnummers()

Dim EindRij As Long
Dim RijVerschil As Long
Dim lngRow As Long
Dim StartRij As Long

StartRij = 5 'dit is het rijnummer waar we beginnen
RijVerschil = 8 'dit is om de hoeveel rijen de code dient uitgevoerd te worden
EindRij = ((Round(ActiveSheet.UsedRange.Rows.Count / RijVerschil, 0) - 1) * RijVerschil) + StartRij

For lngRow = EindRij To StartRij Step -RijVerschil
    ActiveSheet.Rows(lngRow & ":" & lngRow + 2).Delete xlUp
Next lngRow

End Sub

draait wel onder office 2003 ; maar niet onder office 2000

Zie hier geen verklaring voor ?

Zoek nu nog even een oplossing voor volgende.

Indien in kolom AE niets is ingevuld ; dan verwijder deze rij.


vb ( telkens in zelfde bestand) indien rij 68 kolom AE is leeg dan verwijder rij A68
en dit voor alle rijen.
Begin rij 1
Eindrij 6435


Je bent blijkbaar toch wel een " krack " in het schrijven van code.
Welke leerschool ??

Alvast dank.

ps ( kon ook niet weten dat je eerste goed ging draaien onder 2003 en niet onder 2000 ;
waarvoor excuses voor al het zoekwerk )

grema
 
Finch,

jou originele code



draait wel onder office 2003 ; maar niet onder office 2000

Mag ik daaruit besluiten dat dit afgehandeld is?

Je bent blijkbaar toch wel een " krack " in het schrijven van code.
Welke leerschool ??

bedankt. Geen enkele leerschool, enkel autodidact of hoe noemen ze zoiets :)

Alvast dank.

ps ( kon ook niet weten dat je eerste goed ging draaien onder 2003 en niet onder 2000 ;
waarvoor excuses voor al het zoekwerk )

grema

geen probleem

Ivm je nieuwe probleem. Dat is een (vereenoudigde) versie van de andere codes. Ik zou zeggen probeer zelf even, en geraak je er niet uit, dan helpen we wel verder.
Wat je zelf uitvogelt blijft beter hangen, en geeft veel voldoening.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan