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

Rijen verwijderen en sheet copy

Status
Niet open voor verdere reacties.

albert strating

Nieuwe gebruiker
Lid geworden
3 mei 2004
Berichten
4
Hoi,

Als beginnend excel gebruiker loop ik tegen twee problemen aan. Misschien dat jullie zeggen, maar dat is wel heel erg simpel op te lossen…………. Maar hoop dat het toch niet al te dom is wat ik vraag. Kom er tenminste tot nu toe niet op een simpele manier uit wat volgens mij toch moet kunnen.

Heb op een worksheet b.v. gegevens staan van veld A3 t/m I23. Nu wil ik alle rijen verwijden welke in de kolom E ( van 3 t/m 23) de waarde 0 hebben. Hoe kan dit het makkelijkste ???

Hou nu een kleiner aantal rijen over welke ik met behulp van een macro naar sheet 2 wil kopiëren (dit lukt nog wel). Maar nu wil ik ook dat bij het opnieuw invoeren van sheet 1 deze bij het kopiëren onder de eerste komt.

Voorbeeld van A3 t/m I23 blijven nog 5 rijen over welke dus naar sheet 2, A1 t/m I5 moeten . Volgende keer zijn het bv maar 4 rijen. Deze moeten dus komen tussen A6 en I10. Totaal dus 9 rijen. Etc etc.

Hoop dat de vraagstelling duidelijk is en dat iemand me verder op weg kan helpen.

Albert
 
Goede middag Albert,

Een macrootjes voor je eerste probleem:

Sub Verwijder
Columns ("E:E").Replace 0,"",xlWhole
On error resume next
Columns ("E:E").SpecialCells (xlCellTypeBlanks).EntireRow.Delete
ActiveSheet.UsedRange
End Sub

en voor je tweede probleem kan je iets gebruiken in de zin van:

Range("xxx").Copy Destination:=Worksheets("Sheet2").Range("A2").End(xlDown).Offset(1)

waarbij de xxx moet vervangen worden door de te kopieren range

Hopelijk helpt dit je al een beetje op weg maar er komen vast en zeker nog reakties van echte experts!!

Groetjes van Martin & Rosine
 
Albert,
Voor het tweede deel van je vraag heb ik de macro wat verder uitgewerkt (echter nog niet getest)!

Sub Kopieer()
Sheets("Sheet1").Activate
'
'Bepaal laatste rij van de te kopieren range
'
LRij = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevios).Row
'
' Kontroleer of er reeds gegevens staan op Sheet2
'
test = Worksheets("DeletedItems").Range("A2")
'
' Kopieer naar Sheet2
If test = "" Then ' nog geen gegevens op Sheet2 dus kopieer naar A2
Range("A2:I" & LRij).Copy Destination:=Worksheets("Sheet2").Range("A2")
Else 'reeds gegevens op sheet2 dus kopieer onder bestaaande gegevens
Range("A2:I" & LRij).Copy Destination:=Worksheets("Sheet2").Range("A2") _
.End(xlDown).Offset(1)
End If

End Sub

Groetjes van Martin & Rosine
 
Geplaatst door albert strating
Heb op een worksheet b.v. gegevens staan van veld A3 t/m I23. Nu wil ik alle rijen verwijden welke in de kolom E ( van 3 t/m 23) de waarde 0 hebben. Hoe kan dit het makkelijkste ???
Is het aantal rijen dat je in blad1 gebruikt nooit hoger dan 23?
M.a.w.: mag 23 als het hoogst mogelijke rijnummer in blad1 beschouwd worden?
 
Hoi,

Speciaal Martin & Rosine bedankt. Had geen idee dat jullie binnen een uur al een goede oplossing zouden weten. Probleem 1 is al helemaal uit de wereld, waarvoor bedankt. Met het tweede probleem wil het nog niet helemaal lukken. ( krijg maar een copy van twee regels ipv tot het einde). Had gisteren geen tijd, ben nu net dus pas verder gegaan met puzzelen. Merk dat ik mijn kennis wat marco’s betreft wil iets mag verbeteren. Laat nog wel weten of het verder gelukt is.

Albert
 
Hallo,

Kom er toch niet helemaal uit. Bij kopiëren wordt er maar 1 regel naar ander sheet meegenomen.
Probleem lijkt te liggen in regel:

LRij = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevios).Row

Als ik van LRij een vaste waarde maak, b.v.:

LRij = 8 ‘Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevios).Row

Worden er 7 ?! regels gekopieerd.
Wat doe ik fout???
Kan geen goede uitleg vinden over de funtie :
Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevios).Row

Loop hierdoor vast, of is er een andere oplossing.

Nogmaals bij voorbaat dank:

Albert
 
Goede morgen Albert,

Ik zie wel dat we met een typfoutje zitten in de lijn
LRij = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevios).Row

Het moet zijn xlPrevious

LRij is een variabele die de Rijwaarde van de laatst gebruikte rij aangeeft.

Typ in je macro na de lijn waarin LRij word bepaald eens volgende instructie in

MsgBox = LRij

Je zal dan onmiddeliijk te zien krijgen of de variabele LRij zijn werk doet.

Groetjes van Martin & Rosine
 
Hoi Martin & Rosine

Opnieuw bedankt, na het verwijderen van de type fout, wekte het nog niet helemaal, maar toen bleek dat ik met me domme hoofd de macro vanaf de verkeerde sheet opende.!!! Dus nu werkt alles OK.
Kan alleen de extra regel :
MsgBox = LRij

Niet tussenvoegen, krijg dan de foutmelding:
Function call of left-hand side of signment must return variant or object.

Maar programma werkt nu zoals ik graag wil. Moet “alleen” lay-out en beveiligingen etc etc. nog aanbrengen

Albert
 
Albert,

Sorry hoor: het moest natuurlijk zijn MsgBox LRij (dus zonder het =teken).

Zoals je zelf ziet, met een beetje zoeken, een beetje proberen en vooral niet opgeven lukt het altijd.

Groetjes,

Marrosi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan