Avatar billede trajkovski Nybegynder
05. februar 2009 - 17:20 Der er 3 kommentarer og
1 løsning

Slet række hvis celle er tom

Hej

Jeg har følgende script:
Sub fjern_tomme_raekker()
'
' fjern_tomme_raekker Makro
'

Dim antal_raekker As Integer
Dim i As Integer

ThisWorkbook.Worksheets("Ark1").Activate

antal_raekker = ActiveSheet.UsedRange.Rows.Count

i = 9

Do While i < antal_raekker
        'Range("A" & i).Select
       
        If IsEmpty("B" & i) Then
        'EntireRow.Delete
        ActiveCell.EntireRow.Delete 'xlShiftUp
        'ActiveCell.Row.Delete
        i = i + 1
       
        Else
       
        i = i + 1
       
        End If
   
    Loop

End Sub

Som I kan se, har jeg prøvet mig lidt frem, men det virker ikke. Den løber kolonne A igennem, men den sletter ikke rækken, hvis celle B er tom - hvad gør jeg galt?
Avatar billede kabbak Professor
05. februar 2009 - 21:51 #1
en kortere kode, marker kolonne B og kør koden

Public Sub SletTommeCellersRækker()
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp
End Sub
Avatar billede trajkovski Nybegynder
06. februar 2009 - 14:53 #2
Hej igen kabbak


Er du virkelig den eneste på Eksperten, der roder med VBA, siden det altid er dig, der svarer? :)

Nå men jeg er ikke interesseret i at vælge noget, da det er et script, der skal eksekveres ved tryk på en knap, og brugeren skal helst involveres så lidt som muligt. Jeg kunne selvfølgelig tælle, hvor mange rækker der bliver brugt og så selecte Range("B9:B" & antal_raekker) og så bruge din løsning.

Men hvorfor virker mit script ikke?
Avatar billede kabbak Professor
06. februar 2009 - 16:31 #3
Her er den med fast valg

Public Sub SletTomme_i_Kolonne_B()
Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp
End Sub

her nedenunder er din rettet til

Sub fjern_tomme_raekker()
'
' fjern_tomme_raekker Makro
'

    Dim antal_raekker As Integer
    Dim i As Integer
    Application.ScreenUpdating = False
    ThisWorkbook.Worksheets("Ark1").Activate
    antal_raekker = ActiveSheet.UsedRange.Rows.Count

    For i = antal_raekker To 9 Step -1
        If IsEmpty(Range("B" & i)) Then Range("B" & i).EntireRow.Delete
    Next
Application.ScreenUpdating = True
End Sub
Avatar billede trajkovski Nybegynder
08. april 2009 - 15:00 #4
Undskyld det tog så lang tid at vende tilbage...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester