Solujen poistaminen For Each…Next”-silmukkaa Excelissä

  • 9/28/2020
  • 3 minuuttia luettavaa
    • s
    • C
    • A
  • Koskee: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97

Huomautus

Office 365 ProPlus muutetaan nimeksi Microsoft 365 Apps for enterprise. Lisätietoja tästä muutoksesta on tässä blogikirjoituksessa.

Yhteenveto

Microsoft Excel 2002 ja uudemmat Excel-versiot poistavat soluja ”For Each…Next”-silmukassa eri tavalla kuin Microsoft Excel 97 ja aikaisemmat Excel-versiot.

Tässä artikkelissa kuvataan erot ja annetaan Visual Basic for Applications -makroesimerkki, joka havainnollistaa solujen poistamista silmukassa.

Lisätietoa

Microsoft tarjoaa ohjelmointiesimerkkejä vain havainnollistamistarkoituksessa ilman minkäänlaista takuuta. Tämä sisältää muun muassa implisiittiset takuut myyntikelpoisuudesta tai soveltuvuudesta tiettyyn tarkoitukseen. Tässä artikkelissa oletetaan, että tunnet esiteltävän ohjelmointikielen ja työkalut, joita käytetään proseduurien luomiseen ja virheenkorjaukseen. Microsoftin tuki-insinöörit voivat auttaa selittämään tietyn menettelyn toiminnot. He eivät kuitenkaan muuta näitä esimerkkejä lisätoimintojen aikaansaamiseksi tai sellaisten menettelyjen rakentamiseksi, jotka täyttävät sinun erityisvaatimuksesi.

Esimerkkitiedot

Käyttääksesi tässä artikkelissa esitettyä makroa kirjoita seuraavat esimerkkitiedot laskentataulukkoon:

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

Esimerkkimakro

Kirjoita uuteen makromoduuliin seuraava makro.

Esimerkkimakron käyttäytyminen Excel 2002:ssa ja uudemmissa Excel-versioissa

Kun suoritat DeleteCells-makron Excel 2002:ssa ja uudemmissa Excel-versioissa, vain rivit 3, 6 ja 8 poistetaan. Vaikka rivit 4 ja 9 sisältävät ”x”-merkin sarakkeessa A, makro ei poista rivejä. Makron tulokset ovat seuraavat:

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

Kun Microsoft Excel poistaa rivin 3, kaikki solut siirtyvät yhden rivin ylöspäin. Esimerkiksi solu A3 ottaa solun A4 sisällön, solu A4 ottaa solun A5 sisällön ja niin edelleen. Kun For Each…Next -silmukka on arvioinut solun, se arvioi seuraavan solun, joten kun soluja siirretään, silmukka saattaa ohittaa ne.

Esimerkkimakron käyttäytyminen Microsoft Excel 5.0:ssa ja Microsoft Excel 7.0:ssa

Kun suoritat DeleteCells-makron Excel 5.0:ssa ja Excel 7.0:ssa, makro poistaa kaikki ”x”-merkin sisältävät rivit. Makron tulokset ovat seuraavat:

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

Kun rivi 3 poistetaan, kaikki solut siirtyvät yhden rivin ylöspäin. Tällöin solu A3 ottaa solun A4 sisällön, solu A4 ottaa solun A5 sisällön ja niin edelleen.

Toisin kuin silmukka käyttäytyy Excel 2002:ssa ja myöhemmissä Excel-versioissa, kun ”For Each…Next”-silmukka arvioi solua Excel 5.0:ssa ja Excel 7.0:ssa, silmukka arvioi solun uudelleen, jos se poistetaan silmukassa. Soluja ei siis ohiteta.

Silmukan käyttäminen solujen poistamiseen suositeltava menetelmä

Käytä seuraavaa makroa, kun haluat käyttää silmukkaa solujen poistamiseen:

Tämän makron tulokset kaikissa Excel-versioissa ovat seuraavat:

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

Lisämenetelmä silmukan käyttämiseen solujen poistamiseen

Tämä on vaihtoehtoinen menetelmä edellä esitetylle menetelmälle. Tämä menetelmä tuottaa samat tulokset.

Vastaa

Sähköpostiosoitettasi ei julkaista.