• 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 probleem lijnen verplaatsen/deleten

Status
Niet open voor verdere reacties.

Bramco

Gebruiker
Lid geworden
7 jan 2016
Berichten
7
Hoi,

Ik zit met een stom/klein probleempje waar ik zelf niet meer uit kom (al lijkt het mij iets heel klein..) :)

Concept: ik vul in 1 grote lijst verschillende gegevens in. Afhankelijk van de categorie (Aankoop, verkoop of onkosten) schrijft de macro de lijnen weg naar een aparte lijst en wist ze uit de grote lijst.

Macro Aankoop

Sub Aankoop_wegschrijven()
'
' Nullijnen_verplaatsen Macro
' Nullijnen uit lijst halen
'
'
Dim rij As Long
Dim n As Long
Dim src As Worksheet
Dim trg As Worksheet
Set src = Sheets("Ingave")
Set trg = Sheets("Aankoop")
Application.ScreenUpdating = False

rij = trg.[A100].End(xlUp).Row + 1


For n = 3 To Blad1.[A100].End(xlUp).Row
If Cells(n, "B").Value = "Aankoop" Then
Range(Cells(n, "A"), Cells(n, "H")).Copy
trg.Cells(rij, "A").PasteSpecial

Range(Cells(n, "A"), Cells(n, "M")).EntireRow.Delete


rij = rij + 1
End If
Next

Application.Goto [Aankoop!A1], True
Application.Goto [Ingave!A1], True
Application.ScreenUpdating = True

End Sub

Probleem:
Stel ik heb 4 lijnen onder elkaar, allemaal Aankoop. Dus aankoop a, b, c en d.
Ik start de macro, dan zal hij met 1 keer klikken op de knop rij a en c correct wegschrijven.
B en d blijven staan. Dit waarschijnlijk omdat op de moment van het lopen a wordt verplaatst en b,c en d een rij omhoog schuiven. Dan gaat rij +1 dus naar rij 2 maar sprint ie dus onmiddellijk naar c dan (aangezien b ondertussen op rij 1 staat).
Zelfde verhaal met aankoop d dan natuurlijk.

Het is op te lossen door verschillende keren op de knop te klikken maar toch liever een andere oplossing! :cool:

Ik hoop dat dit wat duidelijk is en dat iemand me kan helpen!
Alvast bedankt,
Bram
 
Zet je code tussen codetags.
Plaats een voorbeeld document.

NB.
Het zijn geen lijnen maar rijen of regels.
 
Bij deze:
Code:
Sub Aankoop_wegschrijven()
'
' Nullijnen_verplaatsen Macro
' Nullijnen uit lijst halen
'
'
Dim rij As Long
Dim n As Long
Dim src As Worksheet
Dim trg As Worksheet
Set src = Sheets("Ingave")
Set trg = Sheets("Aankoop")
Application.ScreenUpdating = False

rij = trg.[A100].End(xlUp).Row + 1


For n = 3 To Blad1.[A100].End(xlUp).Row
If Cells(n, "B").Value = "Aankoop" Then
Range(Cells(n, "A"), Cells(n, "H")).Copy
trg.Cells(rij, "A").PasteSpecial

Range(Cells(n, "A"), Cells(n, "M")).EntireRow.Delete


rij = rij + 1
End If
Next

Application.Goto [Aankoop!A1], True
Application.Goto [Ingave!A1], True
Application.ScreenUpdating = True

End Sub
 

Bijlagen

  • Onkostennota.xlsm
    52,3 KB · Weergaven: 21
Als volgt:
Code:
Sub Aankoop_wegschrijven()
'
' Nullijnen_verplaatsen Macro
' Nullijnen uit lijst halen
'
'
    Dim rij As Long
    Dim src As Worksheet
    Dim trg As Worksheet
    Set src = Sheets("Ingave")
    Set trg = Sheets("Aankoop")
    Application.ScreenUpdating = False

    rij = trg.[A100].End(xlUp).Row + 1

    With Worksheets("Ingave").ListObjects(1)
        .Range.AutoFilter Field:=2, Criteria1:= _
                          "=Aankoop", Operator:=xlAnd
        .DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        trg.Range("A" & rij).PasteSpecial xlPasteValuesAndNumberFormats
        .DataBodyRange.SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .Range.AutoFilter
    End With

    Application.Goto [Aankoop!A1], True
    Application.Goto [Ingave!A1], True
    Application.ScreenUpdating = True

End Sub
 
Bedankt Jan Karel!

Leek te werken toen ik enkel testte met rijen alleen op 'Aankoop' maar vanaf ik begin te mixen geeft hij een error op codelijn
Code:
.DataBodyRange.SpecialCells(xlCellTypeVisible).EntireRow.Delete

Heb nieuwe versie toegevoegd als bijlage.
Enig idee waarom juist?

Bedankt!
 

Bijlagen

  • Onkostennota.xlsm
    49,9 KB · Weergaven: 26
A ja, niet aaneengesloten bereiken. Dan als volgt:

Code:
Sub Aankoop_wegschrijven()
'
' Aankoop_verplaatsen Macro
' Aankoop uit lijst halen
'
'
    Dim rij As Long
    Dim src As Worksheet
    Dim trg As Worksheet
    Dim oArea As Range
    Set src = Sheets("Ingave")
    Set trg = Sheets("Aankoop")
    Application.ScreenUpdating = False

    rij = trg.[A100].End(xlUp).Row + 1

    With Worksheets("Ingave").ListObjects(1)
        .Range.AutoFilter Field:=2, Criteria1:= _
                          "=Aankoop", Operator:=xlAnd
        .DataBodyRange.SpecialCells(xlCellTypeVisible).Copy
        trg.Range("A" & rij).PasteSpecial xlPasteValuesAndNumberFormats
        For Each oArea In .DataBodyRange.SpecialCells(xlCellTypeVisible).Areas
            oArea.EntireRow.Delete
        Next
        .Range.AutoFilter
    End With

    Application.Goto [Aankoop!A1], True
    Application.Goto [Ingave!A1], True
    Application.ScreenUpdating = True

End Sub
 
Code:
Sub M_snb()
  With Blad1.ListObjects(1).DataBodyRange
    .AutoFilter 2, "O*"
    .Columns(1).SpecialCells(12).EntireRow.Copy Blad4.Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .SpecialCells(12).ClearContents
    .AutoFilter
    .Sort .Cells(1), , , , , , , 1
  End With
End With
 
ik vul in 1 grote lijst verschillende gegevens in. Afhankelijk van de categorie (Aankoop, verkoop of onkosten) schrijft de macro de lijnen weg naar een aparte lijst en wist ze uit de grote lijst.

Zeer goed plan. Kan je over een tijdje een vraag stellen om de gegevens weer in 1 tabel te zetten.:rolleyes:
Filters, draaitabellen, etc lijken mij een beter idee.
 
VenA heeft natuurlijk overschot van gelijk als hij zegt alles in 1 tabel te zetten en verder te werken met draaitabellen.
Als je nog niet zover bent is het dan ook zinloos om op uw eerste blad een tabel te maken.
En waarom al die lege rijen en kolommen?

Hier is een voorbeeld zonder tabel ( het ziet er zo uit maar ik had geen zin de kleuren aan te passen) en zonder lege rijen en kolommen, en het werkt met 1 knop.
de echte excel experten zullen de code veel te lang vinden maar nu zal je ze misschien begrijpen.
 

Bijlagen

  • Onkostennota bramco.xlsm
    57,5 KB · Weergaven: 12
Wanneer zou nou toch eens het besef indalen dat je in Excel geen rijen/kolommen kunt verwijderen ?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan