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
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle