- 9/28/2020
- 3 minuten om te lezen
-
- s
- C
- A
- Geldt voor: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97
Note
Office 365 ProPlus wordt hernoemd naar Microsoft 365 Apps for enterprise. Lees voor meer informatie over deze wijziging dit blogbericht.
Samenvatting
Microsoft Excel 2002 en latere versies van Excel verwijderen cellen in een “For Each…Next”-lus op een andere manier dan Microsoft Excel 97 en eerdere versies van Excel doen.
In dit artikel worden de verschillen beschreven en wordt een Visual Basic for Applications-macrovoorbeeld gegeven waarmee wordt geïllustreerd hoe cellen in een lus kunnen worden verwijderd.
Meer informatie
Microsoft biedt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt gedemonstreerd en met de hulpprogramma’s die worden gebruikt om procedures te maken en te debuggen. Microsoft support engineers kunnen u helpen de functionaliteit van een bepaalde procedure uit te leggen. Zij zullen deze voorbeelden echter niet wijzigen om extra functionaliteit te bieden of procedures te construeren die aan uw specifieke eisen voldoen.
Staalgegevens
Om de macro in dit artikel te gebruiken, typt u de volgende voorbeeldgegevens in een werkblad:
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
Staalmacro
In een nieuwe macromodule typt u de volgende macro.
Gedrag van de voorbeeldmacro in Excel 2002 en in latere versies van Excel
Wanneer u de DeleteCells-macro uitvoert in Excel 2002 en in latere versies van Excel, worden alleen de rijen 3, 6 en 8 verwijderd. Hoewel rijen 4 en 9 een “x” in kolom A bevatten, verwijdert de macro deze rijen niet. De resultaten van de macro zijn als volgt:
A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10
Wanneer Microsoft Excel rij 3 verwijdert, schuiven alle cellen één rij op. Bijvoorbeeld, cel A3 neemt de inhoud van cel A4 over, cel A4 neemt de inhoud van cel A5 over, enzovoort. Nadat de lus For Each…Next een cel heeft geëvalueerd, wordt de volgende cel geëvalueerd; wanneer cellen worden verschoven, kunnen ze daarom door de lus worden overgeslagen.
Gedrag van de voorbeeldmacro in Microsoft Excel 5.0 en Microsoft Excel 7.0
Wanneer u de DeleteCells-macro uitvoert in Excel 5.0 en in Excel 7.0, verwijdert de macro alle rijen die een “x” bevatten. De resultaten van de macro zijn als volgt:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Wanneer rij 3 wordt verwijderd, schuiven alle cellen één rij op. Vervolgens neemt cel A3 de inhoud van cel A4 over, cel A4 de inhoud van cel A5, enzovoort.
In tegenstelling tot het gedrag van de lus in Excel 2002 en in latere versies van Excel, echter, wanneer de “For Each…Next”-lus een cel evalueert in Excel 5.0 en in Excel 7.0, evalueert de lus de cel opnieuw als deze in de lus wordt verwijderd. Daarom worden de cellen niet overgeslagen.
Aanbevolen methode voor het gebruik van een lus om cellen te verwijderen
Gebruik de volgende macro wanneer u een lus wilt gebruiken om cellen te verwijderen:
De resultaten van deze macro in alle versies van Excel zijn als volgt:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Aanvullende methode voor het gebruik van een lus om cellen te verwijderen
Dit is een alternatieve methode voor de methode die hierboven is weergegeven. Deze methode levert dezelfde resultaten op.