VBA in excel een rij terug

Status
Niet open voor verdere reacties.

eriprof

Gebruiker
Lid geworden
4 aug 2002
Berichten
34
Hallo,
Ik heb het volgende probleem. Ik heb een klein programma geschreven waarbij een tabblad wordt gefilterd. Vervolgens moet de op een na laatste rij worden gekopieerd en in een ander tabblad worden geplakt. Echter als ik het volgende doe:

Naar de laatste rij gaan en rijnummer opslaan als lastrowvalue1
lastrow1 = ActiveCell.End(xlDown).Select
lastrowvalue1 = ActiveCell.Row

De vorige cel selecteren
Range(Cells(lastrowvalue1 - 1, 1), Cells(lastrowvalue1 - 1, 10)).Select
Selection.Copy

Het probleem is dat aangezien de tab gefilterd is de vorige rij (lastrowvalue1-1) niet de vorige gefilterde rij opgeeft, maar de vorige ongefilterde rij. Iemand enig idee hoe ik dit probleem op kan lossen?

Alvast bedankt
 
Test dit eens.
Code:
Sub HSV()
Dim cl As Variant, Rng As Range, C01 As Variant, i As Long, y As Long
With Sheets("Blad1")
 With .AutoFilter
   For i = 1 To .Filters.Count
    If .Filters(i).On Then
      y = y + 1
    End If
   Next i
  End With
If y = 0 Then GoTo einde
 
Set Rng = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row - 1)
 For Each cl In Rng.SpecialCells(12)
   If cl > 0 Then
    C01 = cl.Address
     End If
    Next
   Sheets("Blad2").Cells(Rows.Count, 1).End(xlUp).Offset(1).EntireRow = .Range(C01).EntireRow.Value
 End With
 Exit Sub
einde: MsgBox "Je hebt geen filter(s) gezet"
End Sub
 

Bijlagen

  • filteroffset.xls
    50,5 KB · Weergaven: 64
Laatst bewerkt:
Bedankt voor je suggestie, echter heb ik nog een aantal dingen:

Het filteren moet gedaan worden voor een bepaald ID nummer dat gekopieerd wordt uit een ander tabblad (zie hieronder)

Worksheets("Suspension").Select
Cells(i, 1).Select

Selection.Copy
ActiveSheet.Previous.Select
ActiveSheet.Range("$A$1:$DJ$303108").AutoFilter Field:=1, Criteria1:="=223" _
, Operator:=xlAnd
Cells(1, 1).Select
lastrow1 = ActiveCell.End(xlDown).Select
lastrowvalue1 = ActiveCell.Row

Het ID nummer (223) dat gefilterd moet worden is hierboven hard ingevoerd, maar hij zit in een for loop. Hiermee bedoel ik dat de volgende loop het ID nummer op de volgende rij moet filteren. Ik selecteer het ID nummer via cells(i,1).select zoals hierboven staat. Daarna wordt deze cel gekopieerd. Hoe kan ik dan daarop filteren. Ik heb bij criteria1 selection.paste geprobeerd, maar dat is niet gelukt.


Tot slot werkt je code wel, alleen moet ik de op een na laatste rij selecteren en kopieeren en niet de laatste rij zoals nu gebeurt.
Ik denk dat ik dat probleem heb opgelost door
sn = sq(sq1)
te veranderen in
sn = sq(sq1 - 1)
Is dit correct?

Alvast bedankt.
 
In de code van mij hoef je geen rijen selecteren en kopiëren.
Dit gaat allemaal automatisch.
Je filtert ergens op bv. op 'Daan'; je houdt een x aantal gefilterde rijen over; laat de code HSV lopen, en het zet de één na laatst rij van de gefilterde rijen naar tabblad 2.

Niet meer niet minder.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan