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

macro rijen knippen en plakken ander werkblad

Status
Niet open voor verdere reacties.

tpijnappel

Nieuwe gebruiker
Lid geworden
12 jul 2006
Berichten
2
Hallo,

ik hoop dat jullie mij kunnen helpen. Ik ben voor mijn werk bezig om een
macro te maken waarin rijen van het ene werkblad naar het andere werkblad
geknipt worden. Dit alleen wanneer er bv in kolom T een waarde staat vermeld.
De macro is gemaakt alleen is er een apart probleem: hij knipt niet alle
rijen meer die aan de voorwaarde voldoen..... Kan iemand mij hepen?

een voorbeeld van de macro is:

Sub verplaatsen_van_Belbestand_naar_Later()

For i = 6 To 40007

'Wanneer veld Bx leeg is dan stoppen
If Sheets("Belbestand").Range("B" & i & "") = "" Then
Exit Sub
End If

'Wanneer veld Tx gevuld
If Sheets("Belbestand").Range("W" & i & "") <> "" Then
Sheets("Belbestand").Rows("" & i & ":" & i & "").Cut

'Bepalen welke regel leeg is
For j = 6 To 40007
'Wanneer Bx leeg is dan vullen
If Sheets("Later").Range("B" & j & "") = "" Then

'Rij invoegen
Sheets("Later").Rows("" & j & ":" & j & "").Insert
Shift:=xlDown

'Rij verwijderen uit het Belbestand
Sheets("Belbestand").Rows("" & i & ":" & i & "").Delete
Shift:=xlUp
GoTo volgende
End If

Next j

End If


volgende:
Next i

End Sub

alvast hartelijk bedankt
 
Probeer deze code op een kopie van je bestand!!


40000 rijen duurt 30 á 60 seconden.

Option Explicit
Sub knippen()
Dim i As Long
Dim j As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("Belbestand")
For i = 6 To 40007
j = Sheets("Later").Cells(Rows.Count, "B").End(xlUp).Row
If Range("B" & i) <> "" And Range("T" & i) <> "" Then
Range("B" & i).EntireRow.Cut Sheets("Later").Range("A" & j).Offset(1, 0)
End If
Next i
For i = 40007 To 6 Step -1
If Range("B" & i) = "" Then
Rows.Range("B" & i).EntireRow.Delete Shift:=xlUp
End If
Next i
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Data > Uitgebreide filter

kan veel simpeler zijn dan die code...

Wigi
 
Wigi zei:
Data > Uitgebreide filter

kan veel simpeler zijn dan die code...

Toch een beperking:

Het moet gezegd worden dat Uitgebreide filter enkel kan kopiëren naar een locatie binnen hetzelfde tabblad. Niet naar een ander blad dus.

Wigi
 
ook ...

Je kan met Uitgebreide filter, filteren en kopieëren op een ander werkblad en in een ander bestand, zolang je de gefilterde data alleen plakt in het aktieve scherm waarin je de filter aan roept.

Zeg maar dat je je data ophaalt in plaats van wegschrijft.


groet,
Ferenc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan