Denne vejledning viser forskellige måder at slette rækker og kolonner i Excel på ved hjælp af VBA.
Slet hele række eller kolonne
For at slette en hel række i VBA skal du bruge denne kodelinje:
Rows(1).Delete
Mærk, at vi bruger Delete-metoden til at slette en række.
I stedet for at henvise til Rows-objektet kan du henvise til rækker baseret på deres Range-objekt med EntireRow:
Range("a1").EntireRow.Delete
Sådan kan du også slette en hel kolonne ved at bruge disse kodelinjer:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Slet flere rækker eller kolonner
Med samme logik kan du også slette flere rækker på én gang:
Rows("1:3").Delete
eller kolonner:
Columns("A:C").Delete
Bemærk, at vi her henviser til de specifikke række- og kolonnumre/bogstaver omgivet af anførselstegn.
Selvfølgelig kan du også referere til EntireRow i et område:
Range("a1:a10").EntireRow.Delete
Bemærk: Eksemplerne nedenfor viser kun sletning af rækker, men som du kan se ovenfor, er syntaksen stort set identisk med sletning af kolonner.
Slet tomme / tomme rækker
Dette eksempel sletter en række, hvis hele rækken er tom:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Det gør brug af Excel-arbejdsarkfunktionen: COUNTA.
Slet række, hvis celle er tom
Dette vil slette en række, hvis en bestemt kolonne i den pågældende række er tom (i dette tilfælde kolonne B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Slet række baseret på celleværdi
Dette vil sløjfe gennem et område og slette rækker, hvis en bestemt celleværdi i den pågældende række siger “slet”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Flere eksempler på sletning af rækker og kolonner
Slet dobbelte rækker
Denne kode sletter alle dobbelte rækker i et område:
Range("b2:c100").RemoveDuplicates Columns:=2
Bemærk, at vi har indstillet Kolonner:=2. Dette fortæller VBA, at det skal kontrollere både de to første datakolonner, når det undersøges, om der er tale om dublerede rækker. En dublet findes kun, når begge kolonner har dubletværdier.
Hvis vi havde indstillet dette til 1, ville kun den første række være blevet kontrolleret for dubletværdier.
Slet tabelrækker
Denne kode sletter den anden række i en tabel ved at henvise til ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Slet filtrerede rækker
For kun at slette rækker, der er synlige efter filtrering:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Slet rækker i område
Denne kode sletter alle rækker i området:
Range("a1:a10").EntireRow.Delete
Slet valgte rækker
Denne kode sletter alle valgte rækker:
Selection.EntireRow.Delete
Slet sidste række
Denne kode sletter den sidst anvendte række i kolonne B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Gennem at ændre 2 til 1, kan du slette den sidst anvendte række i kolonne A, osv.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Slet kolonner efter nummer
For at slette en kolonne efter dens nummer skal du bruge en kode som denne:
Columns (2).Delete