Makron suorittaminen määrättyjen solujen muuttuessa Excelissä

Huomautus

Office 365 ProPlus nimetään uudelleen Microsoft 365 Apps for enterprise -sovellukseksi. Lisätietoja tästä muutoksesta on tässä blogikirjoituksessa.

Yhteenveto

Microsoft Excelissä voit luoda makron, joka suoritetaan vain, kun arvo syötetään tiettyyn taulukon soluun tai mihin tahansa avoinna olevaan taulukkoon.

Huomautus, makroja ei kannata suorittaa tarpeettomasti, koska se hidastaa Excelin suorituskykyä.

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. Useimmiten makron tulisi toimia vain, kun tiettyyn määrään soluja on syötetty arvot (dokumentissa näitä kutsutaan "avainsoluiksi"). Estääksesi suuren makron suorituksen, joka kerta kun johonkin taulukon soluun syötetään arvo, tarkista onko aktiivinen solu yksi avainsoluista. Tämän tehdäksesi, käytä AktiivinenSolun Intersect -menetelmää, ja aluetta joka sisältää avainsolut varmistaaksesi, että AktiivinenSolu on yksi avainsoluista. Jos aktiivinen solu on avainsolut sisältävällä alueella, voit suorittaa makron.

Visual Basic makron luominen:

  1. Napsauta Taul1 -välilehteä hiiren kakkospainikkeella ja valitse Näytä koodi.

    Taul1 pohjana oleva moduuliarkki aukenee.

  2. Kirjoita moduulitarkkiin seuraava koodi:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim KeyCells As Range
    
    ' The variable KeyCells contains the cells that will
        ' cause an alert when they are changed.
        Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
               Is Nothing Then
    
    ' Display a message when one of the designated cells has been 
            ' changed.
            ' Place your code here.
            MsgBox "Cell " & Target.Address & " has changed."
    
    End If
    End Sub
    
  3. Napsauta Tiedosto valikosta Sulje ja palaa Microsoft Exceliin.

Kun kirjoitat merkinnän Taul1 soluihin A1:C10, näyttöön tulee sanomaruutu.