Laskentataulukon tietoluettelon selaaminen makrojen avulla Excelissä

Yhteenveto

Kun kirjoitat Microsoft Visual Basic for Applications (VBA) -makron, saatat joutua selaamaan laskentataulukon tietoluetteloa. Tämän tehtävän suorittamiseen on useita tapoja. Tämän artikkelin Lisätietoja-osassa on tietoja menetelmistä, joilla voit etsiä seuraavan tyyppisiä luetteloita:

  • Luettelo, joka sisältää tunnetun, vakiomäärän rivejä.
  • Dynaaminen luettelo tai luettelo, jossa on tuntematon määrä rivejä.
  • Luettelo, joka sisältää tietyn tietueen.

Lisätietoja

Microsoft esittää ohjelmointiesimerkkejä vain asian havainnollistamiseksi, ilman suoraa tai epäsuoraa vastuuta niiden toimivuudesta. Tämä sisältää muunmuassa epäsuorat vastuut soveltuvuudesta kaupankäyntiin tai soveltuvuuteen yksilöityyn käyttöön. Tässä artikkelissa oletetaan, että olet perehtynyt käytettyyn ohjelmointikieleen, sekä proseduurien luonti- ja virheenkorjaustyökaluihin. Microsoftin tukihenkilöt voivat auttaa selvittämään tietyn proseduurin toiminnallisuutta, mutta he eivät muokkaa näitä esimerkkejä parantamaan yksittäisen tarpeen toiminnallisuutta eivätkä luo siihen proseduureja. Seuraavissa koodinäytteissä oletetaan, että luettelossa on otsikkorivi, joka alkaa solusta A1 ja, että tiedot alkavat solusta A2.

Etsi luettelosta, jossa on tunnettu vakiomäärä rivejä.

Tämä koodi siirtää sarakkeen A alaspäin luettelon loppuun:

   Sub Test1()
      Dim x As Integer
      ' Set numrows = number of rows of data.
      NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
      ' Select cell a1.
      Range("A2").Select
      ' Establish "For" loop to loop "numrows" number of times.
      For x = 1 To NumRows
         ' Insert your code here.
         ' Selects cell down 1 row from active cell.
         ActiveCell.Offset(1, 0).Select
      Next
   End Sub

Etsi Dynaamista luetteloa tai luetteloa, jossa on tuntematon määrä rivejä

Tämä koodi siirtää sarakkeen A alaspäin luettelon loppuun. (Tässä koodissa oletetaan, että jokainen sarakkeen A solu sisältää merkinnän loppuun asti.)

   Sub Test2()
      ' Select cell A2, *first line of data*.
      Range("A2").Select
      ' Set Do loop to stop when an empty cell is reached.
      Do Until IsEmpty(ActiveCell)
         ' Insert your code here.
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   End Sub

Huomautus Jos sarakkeessa A on tyhjiä soluja koko tiedoissa, muokkaa tätä koodia tämän ehdon huomioon luomiseksi. Varmista, että tyhjät solut ovat yhtä kaukana toisistaan. Jos esimerkiksi joka toinen sarakkeen A solu on tyhjä (tämä tilanne voi ilmetä esimerkiksi, jos jokainen "tietue" käyttää kahta riviä, joilla on toinen rivi yhden solun sisennys), tätä silmukkaa voidaan muokata seuraavasti:

     ' Set Do loop to stop when two consecutive empty cells are reached.
     Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
        ' Insert your code here.
        '
       ' Step down 2 rows from present location.
       ActiveCell.Offset(2, 0).Select
     Loop

Tietyn tietueen etsiminen luettelosta

Tämä koodi siirtää sarakkeen A alaspäin luettelon loppuun:

   Sub Test3()
      Dim x As String
      Dim found As Boolean
      ' Select first line of data.
      Range("A2").Select
      ' Set search variable value.
      x = "test"
      ' Set Boolean variable "found" to false.
      found = False
      ' Set Do loop to stop at empty cell.
      Do Until IsEmpty(ActiveCell)
         ' Check active cell for search value.
         If ActiveCell.Value = x Then
            found = TRUE
            Exit Do
         End If
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   ' Check for found.
      If found = True Then
         Msgbox "Value found in cell " & ActiveCell.Address
      Else
         Msgbox "Value not found"
      End If
   End Sub