• 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 automatisch verplaatsen naar tweede werkblad

Status
Niet open voor verdere reacties.

dnaafs

Gebruiker
Lid geworden
28 aug 2013
Berichten
5
Hallo,

Ik wil graag dat automatisch (liefst zonder knop maar mag wel) rijen verplaatst worden naar tweede tabblad bij waarde "3" in kolom D. werkblad 1 is 'te doen' en werkblad 2 is 'afgerond'. Ik heb ergens op dit forum al een voorbeeld gevonden dat zo'n functie zou moeten uitvoeren, maar dat krijg ik niet aan de praat met mijn beperkte VBA-kennis.

Ook heb ik er al een functie inzitten (met behulp van een ander voorbeeld) die automatisch de lijst sorteert op basis van kolom B (prioriteit). Ik zou graag met dezelfde functie een sortering toevoegen op kolom G (datum). Er moet éérst op kolom G gesorteerd worden en dan op kolom B, zodat de prioriteiten niet door elkaar komen te staan. Ik krijg dit niet voor elkaar.

Wie wil/kan mij helpen met deze vragen? Alvast erg bedankt.

Groet,
David
 

Bijlagen

  • lijst.xlsm
    79 KB · Weergaven: 31
Wilt gij dit testen en beoordelen of dit voldoet?
Code:
Private Sub Worksheet_Change(ByVal target As Range)
    If target.Count > 1 Then Exit Sub
    If Not Intersect(target, Columns(4).SpecialCells(2).Offset(1).SpecialCells(2)) Is Nothing Then
        If target.Value <> 3 Then
            Exit Sub
        Else
            Range(Cells(target.Row, 1), Cells(target.Row, 7)).Copy
            Sheets("Afgerond").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial
            Range(Cells(target.Row, 1), Cells(target.Row, 7)).Delete xlUp
        End If
    End If
End Sub
 
Ja, het werkt prima! Super.

Nu heb ik nog twee vragen over: 1. hoe integreer ik dit stukje code met mijn bestaande code (zie onder)? Ik krijg ze niet simultaan aan de praat.

bestaande code:
Private Sub Worksheet_Change(ByVal target As Range)
'Zodra u de laatste kolom heeft ingevoerd, dan wordt de lijst
'gesorteerd en gaat de cursor naar de volgende lege cel in kolom A.
If Intersect(target, Range("G2:G2000")) Is Nothing Then Exit Sub
Columns("A:G").Select
Selection.Sort _
Key1:=Range("B:B"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Range("A65536").End(xlUp).Offset(1, 0).Select
End Sub

2: kun je ook iets met mijn andere vraag:
Ook heb ik er al een functie inzitten (met behulp van een ander voorbeeld) die automatisch de lijst sorteert op basis van kolom B (prioriteit). Ik zou graag met dezelfde functie een sortering toevoegen op kolom G (datum). Er moet éérst op kolom G gesorteerd worden en dan op kolom B, zodat de prioriteiten niet door elkaar komen te staan. Ik krijg dit niet voor elkaar.
 
1. Zit er nu bij:
Code:
Private Sub Worksheet_Change(ByVal target As Range)
    If target.Count > 1 Then Exit Sub
    If Not Intersect(target, Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row)) Is Nothing Then
        If target.Value <> 3 Then
            Exit Sub
        Else
            Range(Cells(target.Row, 1), Cells(target.Row, 7)).Copy
            Sheets("Afgerond").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial
            Range(Cells(target.Row, 1), Cells(target.Row, 7)).Delete xlUp
        End If
    End If
    If Not Intersect(target, Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)) Is Nothing Then
        UsedRange.Offset(1).Sort Range("G2"), xlAscending
    End If
End Sub

2. Nee dit gaat niet lukken. Het is of op datum sorteren of op prioriteit.

Wil je volgende keer wel gebruik maken van de code tages? B.v.d.
 
Fantastisch, dat werkt! Klopt het dat hij alleen de rij waarin je werkt update? Hartstikke bedankt!
 
Het wordt inderdaad alleen toegepast op de rij waarin je werkt. Dus je kunt niet meerdere statussen tegelijk op 3 zetten.
 
En als je iedere keer alles update? Of is dat een heel 'lelijke' oplossing..
 
Nee hoor, dit kan je ook op andere manieren oplossen.

1. Is een routine die het geheel update voordat je het bestand opslaat of sluit.
2. Is een routine die het bestand update om de x aantal minuten.
3. Is een routine die handmatig met knop wordt uitgevoerd.

Bijna alles is mogelijk...
 
Het mooiste is een trigger in een change op kolom B én D. Als je namelijk alleen kolom B aanpast (waarop altijd gesorteerd moet blijven), wordt nu niet geüpdatet. Ik krijg overigens nu een foutmelding:

Fout 1004 tijdens uitvoering: Methode Intersect van object _Global is mislukt`. De fout lijkt te liggen in regel:
Code:
If Not Intersect(target, Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)) Is Nothing Then

Ik hoop dat ik je niet overvraag, bedankt weer!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan