Slet celler ved hjælp af en “For hver…Next”-sløjfe i Excel

  • 9/28/2020
  • 3 minutter at læse
    • s
    • C
    • A
  • Gælder for: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97
  • Note

    Office 365 ProPlus er blevet omdøbt til Microsoft 365 Apps for enterprise. Du kan få flere oplysninger om denne ændring i dette blogindlæg.

    Resumé

    Microsoft Excel 2002 og nyere versioner af Excel sletter celler i en “For Each…Next”-sløjfe på en anden måde end Microsoft Excel 97 og tidligere versioner af Excel gør.

    Denne artikel beskriver forskellene, og den indeholder et makroeksempel i Visual Basic for Applications, der illustrerer, hvordan man sletter celler i en løkke.

    Mere information

    Microsoft giver programmeringseksempler udelukkende til illustration, uden udtrykkelig eller stiltiende garanti. Dette omfatter, men er ikke begrænset til, de underforståede garantier for salgbarhed eller egnethed til et bestemt formål. Denne artikel forudsætter, at du er bekendt med det programmeringssprog, der demonstreres, og med de værktøjer, der bruges til at oprette og fejlfinde procedurer. Microsofts supportteknikere kan hjælpe med at forklare funktionaliteten af en bestemt procedure. De vil dog ikke ændre disse eksempler for at give ekstra funktionalitet eller konstruere procedurer, der opfylder dine specifikke krav.

    Eksempeldata

    For at bruge makroen i denne artikel skal du skrive følgende eksempeldata i et regneark:

    A1: a B1: 1A2: b B2: 2A3: x B3: 3A4: x B4: 4A5: c B5: 5A6: x B6: 6A7: d B7: 7A8: x B8: 8A9: x B9: 9A10: e B10: 10

    Eksempelmakro

    I et nyt makromodul skal du skrive følgende makro.

    Adfærd for eksempelmakroen i Excel 2002 og i senere versioner af Excel

    Når du kører makroen DeleteCells i Excel 2002 og i senere versioner af Excel, slettes kun rækkerne 3, 6 og 8. Selv om rækkerne 4 og 9 indeholder et “x” i kolonne A, sletter makroen ikke disse rækker. Makroens resultater er som følger:

    A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10

    Når Microsoft Excel sletter række 3, rykker alle cellerne en række op. F.eks. overtager celle A3 indholdet af celle A4, celle A4 overtager indholdet af celle A5 osv. Når For Each…Next-sløjfen evaluerer en celle, evaluerer den den næste celle; når cellerne flyttes, kan de derfor blive sprunget over af sløjfen.

    Adfærd for eksempelmakroen i Microsoft Excel 5.0 og Microsoft Excel 7.0

    Når du kører makroen DeleteCells i Excel 5.0 og i Excel 7.0, sletter makroen alle rækker, der indeholder et “x”. Resultaterne af makroen er som følger:

    A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

    Når række 3 slettes, rykker alle cellerne en række op. Derefter overtager celle A3 indholdet af celle A4, celle A4 overtager indholdet af celle A5 osv.

    Men i modsætning til løkkens opførsel i Excel 2002 og i senere versioner af Excel, når “For Each…Next”-løkken evaluerer en celle i Excel 5.0 og i Excel 7.0, evaluerer løkken cellen på ny, hvis den slettes i løkken. Derfor springes cellerne ikke over.

    Anbefalet metode til brug af en løkke til at slette celler

    Brug følgende makro, når du vil bruge en løkke til at slette celler:

    Resultaterne af denne makro i alle versioner af Excel er som følger:

    A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

    Anbefalet metode til brug af en løkke til at slette celler

    Dette er en alternativ metode til den metode, der er vist ovenfor. Denne metode giver de samme resultater.

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret.