Sletning af en række med VBA

Du kan slette en række ved at højreklikke på nummeret på rækken og derefter vælge Slet. Men når du vil slette rækker ved hjælp af mere sofistikerede metoder, skal du bruge VBA. Det giver dig mulighed for at slette rækker på mange forskellige måder.

Slet en bestemt række

den mest grundlæggende måde at slette en række i VBA er ved at bruge rækkenummeret.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

Dette sletter den fjerde række hver gang du udfører makroen.

Slet flere rækker

Du kan også slette et par rækker på en gang. I stedet for at vælge rækkenummeret skal du vælge en række rækker.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

det vil slette rækker 2, 3 og 4.

Slet valgte rækker

indtil videre oprettede vi makroer, der slettede rækker med faste tal inde i koden. Denne gang, lad os slette rækker fra et valg. Lad os bruge følgende kode.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

Slet tomme rækker

i dette eksempel identificerer du, hvilke celler der er tomme, vælger dem og fjerner de rækker, de er til stede i.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

denne makro sletter kun rækker fra markering, hvis den indeholder sætningen”dårlig række”.

forsigtig

Husk, at teksten er store og små bogstaver.

Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

kodeanalyse

2. Sløjfen går gennem hvert element i udvælgelsen.

3. Kontrollerer den faktiske celleværdi, og om værdien er nøjagtigt “dårlig række”.

4. Hvis betingelsen er opfyldt, slettes indholdet af cellen. Vi kan ikke slette celle, fordi cellepositionen ændres, og nogle af “dårlige rækker” kan forblive.

7. Når alle “dårlige rækker” ryddes, vælges disse celler.

8. Sletter derefter rækker af disse celler.

Hvis du også vil slette de rækker, der består af denne sætning, og ikke kun det nøjagtige match, skal du bruge InStr-funktionen. Denne funktion returnerer placeringen af den første forekomst af sætningen.

Skift

Cell.Value = "Bad Row"

til

InStr(Cell, "Bad Row") > 0

Vi har fire forskellige eksempler inde i vores regneark. Hver af dem returnerer en position.

  • “dårlig række” returnerer 1
  • ” god række”returnerer 0
  • ” 1 dårlig række”returnerer 3
  • ” dårlig række !”returnerer 1

det betyder, at alle rækker men “god række” fjernes.

Slet række, hvor celletypen er en streng

i dette eksempel sletter vi en række, hvis celletypen er en streng.

Ved første øjekast synes cellerne A3, A4 og A5 at være af samme type. Men når du ser på, hvad der foregår bag kulisserne (Ctrl+`), vil du se, at hver af dem er forskellige.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

i den anden linje har du følgende kode:. Det betyder, at vi søger efter konstanter. Nummer 2 betyder den anden type, som er tekst.

Vælg kun værdier af typen tekst.

resultatet.

Slet lige/ulige rækker

lad os nu kun slette de rækker, der er lige.

Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

koden ligner meget den fra det foregående eksempel. Der er kun en forskel.

celle.Række Mod 2 = 0

dette betyder, hvis resten efter division er 0 (for tal: 2, 4, 6, 8, …) så er tallet lige, hvis det er 1, så er det et ulige tal (1, 3, 5, 6, …).

regneark og Python entusiast.

indlæg visninger: 72,354

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.