Usuwanie komórek za pomocą pętli „For Each…Next” w Excelu

  • 9/28/2020
  • 3 minuty na przeczytanie
    • s
    • C
    • A
  • Dotyczy: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97

Uwaga

Office 365 ProPlus zmienia nazwę na Microsoft 365 Apps for enterprise. Aby uzyskać więcej informacji na temat tej zmiany, przeczytaj ten wpis na blogu.

Podsumowanie

Microsoft Excel 2002 i nowsze wersje programu Excel usuwają komórki w pętli „Dla każdego…Następny” w inny sposób niż robi to program Microsoft Excel 97 i wcześniejsze wersje programu Excel.

Ten artykuł opisuje te różnice i zawiera przykład makra Visual Basic for Applications, który ilustruje sposób usuwania komórek w pętli.

Więcej informacji

Microsoft udostępnia przykłady programistyczne wyłącznie w celach ilustracyjnych, bez gwarancji wyrażonej lub domniemanej. Obejmuje to między innymi dorozumiane gwarancje przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna język programowania, który jest demonstrowany, oraz narzędzia używane do tworzenia i usuwania błędów w procedurach. Inżynierowie pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu funkcjonalności danej procedury. Nie zmodyfikują jednak tych przykładów, aby zapewnić dodatkową funkcjonalność lub skonstruować procedury spełniające określone wymagania użytkownika.

Przykładowe dane

Aby użyć makra z tego artykułu, wpisz następujące przykładowe dane w arkuszu:

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

Przykładowe makro

W nowym module makra wpisz następujące makro.

Zachowanie przykładowego makra w programie Excel 2002 i w późniejszych wersjach programu Excel

Po uruchomieniu makra DeleteCells w programie Excel 2002 i w późniejszych wersjach programu Excel usuwane są tylko wiersze 3, 6 i 8. Mimo że wiersze 4 i 9 zawierają znak „x” w kolumnie A, makro nie usuwa tych wierszy. Wyniki działania makra są następujące:

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

Gdy program Microsoft Excel usuwa wiersz 3, wszystkie komórki przesuwają się o jeden wiersz w górę. Na przykład komórka A3 przejmuje zawartość komórki A4, komórka A4 przejmuje zawartość komórki A5 itd. Po tym, jak pętla For Each…Next przetwarza komórkę, przetwarza następną komórkę, dlatego gdy komórki są przesunięte, mogą zostać pominięte przez pętlę.

Zachowanie przykładowego makra w programach Microsoft Excel 5.0 i Microsoft Excel 7.0

Po uruchomieniu makra DeleteCells w programie Excel 5.0 i Excel 7.0 makro usuwa wszystkie wiersze zawierające znak „x”. Wyniki działania makra są następujące:

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

Po usunięciu wiersza 3 wszystkie komórki przesuwają się o jeden wiersz w górę. Następnie komórka A3 przejmuje zawartość komórki A4, komórka A4 przejmuje zawartość komórki A5 itd.

Jednakże w przeciwieństwie do zachowania pętli w programie Excel 2002 i w późniejszych wersjach programu Excel, gdy pętla „For Each…Next” ocenia komórkę w programie Excel 5.0 i w programie Excel 7.0, pętla ponownie ocenia komórkę, jeśli zostanie ona usunięta w pętli. Dlatego komórki nie są pomijane.

Zalecana metoda użycia pętli do usuwania komórek

Jeśli chcesz użyć pętli do usuwania komórek, użyj następującego makra:

Wyniki działania tego makra we wszystkich wersjach programu Excel są następujące:

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

Dodatkowa metoda użycia pętli do usuwania komórek

Jest to metoda alternatywna do metody przedstawionej powyżej. Ta metoda daje takie same wyniki.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.