Bij veranderende cel, kopie naar ander tabblad

Status
Niet open voor verdere reacties.

bobelsenburg

Gebruiker
Lid geworden
10 sep 2021
Berichten
10
Hoi allemaal,

Ik probeer een paar automatische acties uit te laten voeren op basis van de inhoud van een cel, maar het lukt me niet. De situatie is als volgt:

- Twee tabbladen: Approval en Register
- In Approval staat een regel met data (in A2 t/m Q2).
- In S2 staat een drop-down menu. Wanneer Approval wordt geselecteerd, dan moeten er wat acties plaatsvinden:
- De regel met data (dus A2 t/m Q2) moet (met waarden) geplakt worden in de eerstvolgende lege regel in het tabblad Register, maar dan in C2 t/m S2. In A/B2 staat namelijk al een referentienummer (met een formule onzichtbaar gemaakt totdat de cel in kolom C een waarde heeft).
- Nadat de regel is geplakt, moet de oorspronkelijke regel in Approval (dus A2 t/m S2, want inclusief de drop-down keuze) weer worden geleegd voor de volgende keer.
- Hierna volgt een MessageBox die zegt dat de data is verplaatst en zijn we weer terug bij af

Het lukt me niet om de VBA-tekst op de gebruikelijke manier te kopiëren, dus hier even op de lelijke manier wat ik tot nu toe heb gemaakt (wat dus niet werkt).
Kan iemand mij helpen? Bijgevoegd het bestand waar het om gaat!

Alvast veel dank




Private Sub Worksheet_Change(ByVal Target As Range)
If Range("S2").value = "Approved" Then
Nr = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row
Sheets("Approval").Select
Range("A2:Q2").Copy
Sheets("Register").Select
Range("C" & Nr).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Approval").Select
Range("A2:S2").Delete
MsgBox "Incident moved to Register"
End If
End Sub
 

Bijlagen

  • Register.xlsm
    43,4 KB · Weergaven: 15
Gewoon alles in 1 tabel laten staan en filters gebruiken lijkt mij makkelijker. Lr bepaal je in het verkeerde tabje. Als je Worksheet_Change gebruikt en doet ook nog aanpassing in dat tabje moet je de Events uit en weer aanzetten anders kom je in een oneindige lus.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns(19).SpecialCells(-4174)) Is Nothing Then
    If Target = "Approved" Then
      Application.EnableEvents = False
      Sheets("Register").Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 17) = Cells(Target.Row, 1).Resize(, 17).Value
      Cells(Target.Row, 1).Resize(, 19).Delete
      Application.EnableEvents = True
    End If
  End If
End Sub
 
Gewoon alles in 1 tabel laten staan en filters gebruiken lijkt mij makkelijker. Lr bepaal je in het verkeerde tabje. Als je Worksheet_Change gebruikt en doet ook nog aanpassing in dat tabje moet je de Events uit en weer aanzetten anders kom je in een oneindige lus.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Columns(19).SpecialCells(-4174)) Is Nothing Then
    If Target = "Approved" Then
      Application.EnableEvents = False
      Sheets("Register").Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(, 17) = Cells(Target.Row, 1).Resize(, 17).Value
      Cells(Target.Row, 1).Resize(, 19).Delete
      Application.EnableEvents = True
    End If
  End If
End Sub

Dank voor de reactie! Enige probleem is dat er verschillende personen in de verschillende tabbladen mogen. Degene die approved is niet persé degene die ook in het register mag, vandaar dat ik ze liever gescheiden houd. Is er een andere methode om dit uit te voeren dan, als ik niet Worksheet-Change zou gebruiken? Een sub heb ik ook over nagedacht maar is niet handig omdat ik dan een knop per regel moet hebben.

EDIT: Ik heb het samengevoegd en het lijkt nu te werken! Enige puntje dat blijft is nog het deleten..
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan