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

Aangezien het tweede getal 65536 zit je op de rijen limiet van Excel, en we tellen daar nog twee bij. Maar dat kan niet voor Excel, vandaar de fout.
Blijkbaar heb je in de laatste rij ergens (misschien per ongeluk) een waarde gezet, of gebruikt gehad. Ik ging even van de veronderstelling uit dat je niet verder ingevuld had dan in je laatste rij "echte" data.
 
Finch


kijk je toch nog even naar deze code
Code:
Sub VerwijderLegeCelAE()

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

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

DeleteBlok = ("AE") = ""

Do Until DeleteBlok < 3

    ActiveSheet.Rows(DeleteBlok & ":" & DeleteBlok - 2).Delete xlUp  ' hier weet ik het zo nog net niet !!
    DeleteBlok = DeleteBlok '- RijVerschil
Loop

End Sub

Er is geen rijverschil === dus uitgeschakeld
te deleten blok = ("AE") = ""

Kan dit of zit ik er naast

geef desnoods een hint.
 
Code:
Blijkbaar heb je in de laatste rij ergens (misschien per ongeluk) een waarde gezet, of gebruikt gehad. Ik ging even van de veronderstelling uit dat je niet verder ingevuld had dan in je laatste rij "echte" data.

Zal dan zeker per ongeluk geweest zijn .
 
Code:
Sub VerwijderLegeCelAE()

Dim BeginRij as long
Dim Eindrij As Long
Dim KolomToCheck as Long
Dim lngRow as long

Eindrij = 6435 'dit is de laatste rij die moet verwijderd worden
BeginRij=1
KolomToCheck=31 'is kolomnummer van AE (to check)


for lngrow=eindrij to beginrij step -1
   if activesheet.cells(lngrow,kolomtocheck)="" then
       ActiveSheet.Rows(lngrow).Delete xlUp  ' hier weet ik het zo nog net niet !!
   end if
next lngrow

End Sub

Je kan omdat je begin en eindrij nu kent beter werken met een for ... next structuur.
verder had je nog een variabele met de kolomnummer van de kolom waar je wilt op checken nodig.
Je wilt niet elke rij checken, enkel als AE leeg is, dus ook een IF THEN ELSE structuur gebruiken.
En wederom omdat het deleten is, van onder naar boven werken. Vandaar step -1 (als het gewoon elke rij is van boven naar beneden, dan kan je daar step +1 zetten, maar dat is de standaard waarde, en wordt daarom weggelaten in dat geval)
 
gewoon prachtig.:thumb:

Weer een gelukkig mens :D Jou goede daad van vandaag zit er weer op.

Deze mag afgesloten worden.


Bedankt voor de hulp en vooral het geduld.
Heb weer een pak bijgeleerd . Weer een voor de verzameling.


groetjes

grema
 
gewoon prachtig.:thumb:

Weer een gelukkig mens :D Jou goede daad van vandaag zit er weer op.

Deze mag afgesloten worden.


Bedankt voor de hulp en vooral het geduld.
Heb weer een pak bijgeleerd . Weer een voor de verzameling.


groetjes

grema

Blij dat ik kon helpen.

Ik moet er wel bijzeggen, dat het allemaal misschien een beetje efficienter kon op het vlak van lijnen code, en het gebruik van bepaalde manieren, maar om dat correct in te schatten heb je een zicht nodig over het geheel, en niet op fragmentarische stukjes.
Neemt niet weg dat de codes allemaal wel werken op zich, maar tergelijkertijd toch efficienter kunnen.
 
Code:
beetje efficienter kon op het vlak van lijnen code, en het gebruik van bepaalde manieren, maar om dat correct in te schatten heb je een zicht nodig over het geheel, en niet op fragmentarische stukjes.

geef ik graag toe , maar denk dat ik hier wel veel uit geleerd heb
( ook nog veel zelf geprutst hoor !! )


Tot een dezer


grema
 
Ik heb de hele topic terug gelezen.

Ik moet er wel bijzeggen, dat het allemaal misschien een beetje efficienter kon op het vlak van lijnen code

Niet enkel op het vlak van lijnen code.

Dit bv. verwijdert de rijen wanneer de cel van die rij in kolom A leeg is:

Code:
Sub VerwijderenMetF5()

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        
        On Error Resume Next
        Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        On Error GoTo 0
        
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
        
    End With

End Sub

Scheelt je voor 1000-en rijen wel heel wat tijd naar mijn mening.

Onthoud dat lussen in Excel traag zijn en vermeden moeten worden.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan