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

regels verwijderen (bij lege cel in een bepaalde kolom) lukt niet

Status
Niet open voor verdere reacties.
Als het niet van de barcodescanner komt, zou ik een compleet nieuw bestand aanmaken.
 
Alles helemaal opnieuw maken bedoel je?
Maar wel de code kopiëren en de celinhoud van wat ik heb?
Of alles zelf opnieuw intypen?
Tja, zo lust ik er nog wel een paar, Harry. Jij die me al zoveel goede ideeën aan de hand hebt gedaan.

Maar je hebt dus ook geen idee hoe het komt dat die gekoppelde cellen niet altijd leeg zijn, hoewel ze leeg zouden moeten zijn?
Ik had er nog zo op gehoopt.

Mijn laatste bestand zit overigens bij
HTML:
http://www.helpmij.nl/forum/showthread.php/927999-Tekstveld-op-Formulier-maakt-gekoppelde-cel-niet-echt-leeg
 
Laatst bewerkt:
Hallo Gerrit,

Ja, als ik er niets meer in zie kan je dat het beste doen (bestand is corrupt geworden).

De ene keer schrijf je dat de gegevens door een barcodescanner worden geplaatst, een andere keer weer niet.
Een van de twee zal het ongetwijfeld zijn, maar oplossingen bedenken naar mogelijke problemen die steeds veranderen kan ik niet.
 
Dag Harry,

Nee ik zei toch al dat ik gewoon op de pc aan het testen ben.
Handmatige invoer dus.
Die barcodescanner wordt later pas gebruikt als het programma door mijn testfase heen is.

Maar je mag er gerust van uitgaan dat het straks niet aan die barcodescanner ligt.
Dat wat er gebeurt, gebeurt nu hier op mijn PC.

Maar toch bedankt voor al het werk dat je er ingestoken hebt.

Groetjes,
Ger
 
Je openingsvraag Gerrit.
Hallo beste helpers,

Ik heb een werkblad met daarin een aantal regels opgeslagen gegevens.
Het gaat om oude codes, die met wat andere gegevens (datum, medewerker, ordernummer) worden gekoppeld aan een nieuwe code.
De codes komen in mijn bestand met een barcodescanner en het kan soms gebeuren zijn dat een code niet gescand hoeft te worden.
Ik heb dus zowel bij de oude codes als bij de nieuwe codes kans op een leeg veld.

Ik moet nu de regels waarbij dat het geval is (in het voorbeeldbestand in kolom C en kolom I) verwijderen.

Ik dacht dat het met de volgende regel zou moeten kunnen, maar daar heb ik me kennelijk in vergist.

Code:
    Range("C5", Range("C10000").End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Verander ik C5 en C10000 in I5 en I10000 dan gaat het ook niet.
Ook C5 en I10000 levert geen resultaat, maar A5 en I10000 verwijdert wel alle regels.

Wat heb ik over het hoofd gezien?

Groetjes,
Ger

Bekijk bijlage 311029

Dus kijk of het in een nieuw bestand wel goed gaat, zo ja, gooi het oude bestand aan de kant.
 
Laatst bewerkt:
Je hebt gelijk Harry,

Ik dacht dat ik het bij deze vraag ook al eens had vermeld.
Ik heb namelijk nog een vraag gepost met een soortgelijk probleem met dit programma.

Daar heb ik wel al eens aangegeven dat ik nog aan het testen ben.
Ik was in de veronderstelling dat je dat ook wist. Mijn fout.

Nee, die scanner heb ik dus zelf niet.
Ik ben nu het programma aan het testen en moet alles met de hand intikken.

En die cellen die dus vermeend leeg zijn verwijder ik met dat stukje code van jou:
Code:
 Columns(3).Replace "", " "
 Columns(3).Replace " ", ""
    On Error Resume Next
    Range("C5:C10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Range("J5:J10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Dat gaat alleen nogal traag, maar het is niet anders.
De klant zal maar wat geduld moeten hebben als er straks 20000 regels staan.

Groetjes,
Ger
 
Laatst bewerkt:
Dan houden we het zo snel mogelijk Ger.
Code:
Sub hsv()
With ActiveSheet.UsedRange
   .Columns(3).Replace "", " "
   .Columns(3).Replace " ", ""
 On Error Resume Next
    Range("c5", .Cells(.Parent.Cells.SpecialCells(11).Row, 3)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Range("J5", .Cells(.Parent.Cells.SpecialCells(11).Row, 10)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 End With
End Sub

Columns(3) gaat razendsnel, maar kan ook zo.
Code:
Range("c5", .Cells(.Parent.Cells.SpecialCells(11).Row, 3)).replace ""," "
 
Bedankt Harry,

Ga ik meteen gebruiken.
.parent.cells betekent de ouder van de cell ? Dus het werkblad?

of is dat te simpel gedacht?
 
Met .parent ga je een stap terug naar het hoofdobject.

Dus van 'Activesheet.usedrange' ga ik terug naar 'Activesheet'.
 
Ik krijg nu een foutmelding: ongeldige of niet gekwalificeerde verwijzing

bij
Code:
Range("c5", .Cells(.Parent.Cells.SpecialCells(11).Row, 3)).Replace "", " "
.parent wordt bij de fout geselecteerd
 
Dat komt doordat je met de punt voor 'cells' nu uitgaat van: 'activesheet.usedrange.cells'.
Daar zou ook .parent voor moeten om terug te keren naar 'Activesheet'.
Doordat er 'On error Resume Next staat glipt die daar doorheen.



Maar zo'n code heeft altijd betrekking op het actieve blad, kan dus ook achterwege gelaten worden.
Code:
Range("c5", Cells(Cells.SpecialCells(11).Row, 3)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Compleet wordt het zo; gehangen aan een knop op het betreffende werkblad.
Code:
Sub hsv()
   Range("c5", Cells(Cells.SpecialCells(11).Row, 3)).Replace "", " "
   Range("c5", Cells(Cells.SpecialCells(11).Row, 3)).Replace " ", ""
 On Error Resume Next
    Range("c5", Cells(Cells.SpecialCells(11).Row, 3)).SpecialCells(4).EntireRow.Delete
    Range("J5", Cells(Cells.SpecialCells(11).Row, 10)).SpecialCells(4).EntireRow.Delete
End Sub
 
Laatst bewerkt:
Nu werkt 'ie wel.
Ik had die
Code:
With ActiveSheet.UsedRange
niet toegevoegd.

Maar sneller is het niet.
 
Ik had nog een aanpassing gedaan.

Code:
Sub hsv()
   With Range("c5", Cells(Cells.SpecialCells(11).Row, 3))
     .Replace "", " "
     .Replace " ", ""
 On Error Resume Next
     .SpecialCells(4).EntireRow.Delete
     .Offset(, 7).SpecialCells(4).EntireRow.Delete
   End With
End Sub

Geen idee of het sneller is.
 
- plaats geen bestanden die wijzigingen aanbrengen op application-nivo van de gebruiker van dit forum. In jouw geval de Application.statusbar
- plaats geen modulen/werkbladen die niets met je vraag van doen hebben.
- beperk het voorbeeldbestand tot de illustratie van je vraag.
- structureer simpel wanneer je aan het bouwen bent: gebruik altijd cel A1 in een werkblad: een lege 1e rij of 1e kolom (of meer) maken je code onnodig gecompliceerd.
- check tussentijds of de usedrange niet zinloos groot is (zoals in jouw geval) en pas dat aan.

Code:
Sub M_snb()
  sn = UsedRange
  
  For j = 1 To UBound(sn)
     If sn(j, 1) = "" Then sn(j, 1) = c00
     If sn(j, 7) = "" Then sn(j, 7) = c00
  Next
  UsedRange = sn
  
  UsedRange.Columns(1).SpecialCells(4).EntireRow.Delete
  UsedRange.Columns(7).SpecialCells(4).EntireRow.Delete
End Sub
 

Bijlagen

Laatst bewerkt:
@snb, Beetje haastig erin geklopt? :rolleyes:
 
Hallo snb,

Sorry in ieder geval voor je punt 1
Ik had zelf nog niet opgemerkt dat de statusbalk niet terug verandert als ik het programma afsluit.
Ik ga dat zeker aanpassen.
Ik heb inderdaad wat knoppen en formulieren laten staan.
Maar als ik ze verwijderd had had ik steeds foutmeldingen gekregen omdat die knoppen in de code enabled/disabled worden.

Ik zal je tips zeker meenemen voor een volgende keer.

Groetjes,
Ger
 
Als je zelf iets niet merkt dan dan kan je beter de reacties serieus (door)nemen.
zie #12
Het is overigens niet handig om een voorbeeldje te plaatsen dat bij het openen de status van bepaalde zaken aanpast zonder dat het bij het sluiten weer hersteld wordt.
 
Achteraf moet ik je daar gelijk in geven VenA, maar geef toe dat je daar toch ook wel heel vaag was ;-)
Ervaren Excel en VBA gebruikers hadden dat misschien meteen doorgehad, maar daar reken ik mezelf nog niet toe.
Gewoon man en paard noemen, daar kan toch niemand een probleem mee hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan