Toon posts:

excel rijen verwijderen

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Heeft iemand een oplossing?

Ik wil graag dat excel met een druk op de knop de rijen verwijdert waarvan de kolommen a en b leeg zijn.

Ik heb de volgende code maar die doet het niet helemaal goed:

Sub test()
For vRow = 6 To 300
If ActiveSheet.Cells(vRow, 1) = "" Then
ActiveSheet.Rows(vRow).Delete
vRow = vRow + 1
End If
Next vRow
End Sub

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Ik zou de rij met 1 ophogen buiten de "if" :)

vRow = vRow + 1 moet weg dus, je Next zorgt voor de ophoging...

[ Voor 74% gewijzigd door Coltrui op 06-04-2004 14:45 ]


Verwijderd

Topicstarter
Heb ik geprobeerd maar op de een of andere manier doet hij het nu nog niet

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Je zei kolommen a en b? Waarom check je dan alleen op 1 kolom?

Verwijderd

Topicstarter
Ja, het staat er inderdaad verkeerd, maar voor de oplossing maakt het niets uit

  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Heb het getest en het werkt gewoon hoor... :?

Wel even vRow declareren als integer...

  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
code:
1
2
3
4
5
6
7
8
Sub test()
   For vRow = 6 To 300
      If ActiveSheet.Cells(vRow, 1) = "" Then
         ActiveSheet.Rows(vRow).Delete
         vRow = vRow + 1
       End If
    Next vRow
End Sub


Waarom verhoog je die vRow? Dat doet de for-next loop volgens mij al.

Verder zou ik
code:
1
If ActiveSheet.Cells(vRow, 1) = "" Then

veranderen in:
code:
1
If IsEmpty(ActiveSheet.Cells(vRow, 1)) Then

[ Voor 17% gewijzigd door Markieman op 06-04-2004 15:03 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
(verkeerde knopje, quote ipv edit)

[ Voor 97% gewijzigd door Markieman op 06-04-2004 15:03 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • BraveWorld
  • Registratie: September 2001
  • Niet online
Gokje: moet het niet vRow = vRow - 1 zijn?

Als de row verwijderd wordt (niet alleen leeg gemaakt) dan schuiven onderstaande regels naar boven.

Anders moet je even duidelijker aangeven wat ie nou eigenlijk verkeerd doet.

Dit is geen signature...


  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
Misschien een idee:

code:
1
2
3
4
5
6
7
8
9
10
11
lAantal = Activesheet.Range("A1").CurrentRegion.Rows.Count
vRow = 1

do while vRow <= lAantal
    if isempty(ActiveSheet.Cells(vRow,1).Value) then
       ActiveSheet.Rows(vRow).Delete xlUp
       lAantal = lAantal - 1
    end if

    vRow = vRow + 1
loop

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Verwijderd

Topicstarter
Even de tweede optie van markieman proberen

[ Voor 86% gewijzigd door Verwijderd op 06-04-2004 15:11 ]


  • BraveWorld
  • Registratie: September 2001
  • Niet online
Waarschijnlijk moet je de ophoging door de FOR NEXT loop compenseren want je hebt een rij verwijderd.

Dit is geen signature...


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Verwijderd schreef op 06 april 2004 @ 15:08:
Even de tweede optie van markieman proberen
code:
1
2
3
4
5
6
7
8
9
Sub test()

Dim vRow As Integer
For vRow = 300 To 6 step -1
If IsEmpty(ActiveSheet.Cells(vRow, 1)) Then
ActiveSheet.Rows(vRow).Delete
End If
Next vRow
End Sub


Probeer deze eens...
Van achter naar voor dus...

[ Voor 4% gewijzigd door Coltrui op 06-04-2004 15:13 ]


Verwijderd

Topicstarter
Jullie allen bedankt voor het meedenken:

De bruikbare code kwam van Wezen


Nogmaals bedankt

  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
Mag ik je alleen nog even wijzen op het feit dat het "gevaarlijk" is de getallen 6 en 300 hardcoded te plaatsen.

Is het in de praktijk werkelijk onmogelijk dat de grens van 300 overschreden wordt?

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Verwijderd

Topicstarter
Hoe kan ik dat dan het beste variabel maken?

Verwijderd

Ik heb dit ff gekopieerd, geplakt uit een macro hiero dus hij is niet specifiek voor jou probleem maar het laat wel het idee erachter zien.

code:
1
2
3
4
5
6
7
8
9
    Dim i As Integer
    i = 1
                 Do Until IsEmpty(Cells(i, 3))
                 If Cells(i, 1) = "" AND Cells(i,2) = "" Then
                 'delete cells'
            End If
            i = i + 1
    Loop
End Sub

[ Voor 114% gewijzigd door Verwijderd op 06-04-2004 15:48 ]


  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
Verwijderd schreef op 06 april 2004 @ 15:33:
Hoe kan ik dat dan het beste variabel maken?
Ik weet niet hoe je tabel er uitziet, maar er moet een manier zijn om te bepalen hoeveel regels je gebruikt.

Bijvoorbeeld als je alle regels waarvan kolom A leeg is wilt verwijderen en in kolom B staat geen enkele lege waarde dan (er vanuitgaande dat 6 de eerste regel uit je lijst is, een beginwaarde mag je vastzetten, een maximum uiteraard niet):
code:
1
2
lAantal = ActiveSheet.Range("B6:B65536").CurrentRegion.Rows.Count
lMaxRegel = 6 + lAantal - 1


Stel lAantal = 20 dan moet je regel 6 tot en met regel 25 doorlopen.

Anders zou je eventueel een teller in kunnen bouwen.

Btw, 65536 is het absolute maximum in het aantal regels in een Excel blad

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • Markieman
  • Registratie: December 2001
  • Laatst online: 28-08 15:14
Verwijderd schreef op 06 april 2004 @ 15:41:
Ik heb dit ff gekopieerd, geplakt uit een macro hiero dus hij is niet specifiek voor jou probleem maar het laat wel het idee erachter zien.

code:
1
2
3
4
5
6
7
8
9
    Dim i As Integer
    i = 1
                 Do Until IsEmpty(Cells(i, 3))
                 If Cells(i, 1) = "" AND Cells(i,2) = "" Then
                 'delete cells'
            End If
            i = i + 1
    Loop
End Sub
Waarschijnlijk worden zo niet alle regels doorlopen:
stel:
code:
1
2
3
4
5
6
7
8
24
25342
353
343

35

575


Dan stop jouw code al bij regel 5

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.

Pagina: 1