Makron suorittaminen

Moi, onko jotakin helppoa keinoa seuraavaan "ongelmaan".

Mulla on excelissä makro joka suorittaa määrätyt toiminnot.
Makro toimii hyvin.

Mutta, näytöllä näkyy makron suorituksen aikana kaikki toiminnot, käsittääkseni makron saisi suoritettua myös ns. taustalla, niin ettei se "välky" kokoajan näytöllä. Näytöllä olisi tiimalasi makron suorituksen aikana ja kun makro on suorittanut tehtävänsä niin näytölle tulee lopputulos. ( tai msg-box jossa olisi viesti "Valmis" OK-painikkeen kera )
6774
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

laita Application.ScreenUpdating = False makron alkuun ja loppuun Application.ScreenUpdating = True
Mahdollisten virhetapausten johdosta PITÄÄ EHDOTTAMASTI rakentaa hyppy koodissa, jolla varmistetaan kuvaruutupäivityksen päälle otto tai muuten excel ei jatkossa päivitä mitään näytölle.

esim.
Sub Koe()
On Error GoTo virhe
'koodia
MsgBox "Makro suoritettu", vbInformation
Application.ScreenUpdating = True
Exit Sub
virhe:
MsgBox "Virhe makroa suoritettaessa", vbInformation
Application.ScreenUpdating = True
On Error GoTo 0
End Sub

Äänestä
  • Kiitos Kunde.
    Mä testaan tänään.

    Äänestä

  • >Mahdollisten virhetapausten johdosta PITÄÄ EHDOTTAMASTI rakentaa hyppy koodissa, jolla varmistetaan kuvaruutupäivityksen päälle otto tai muuten excel ei jatkossa päivitä mitään näytölle.<

    Hmm... En ole havainnut samaa. Minun makroni jossa olen käyttänyt Screenupdating = False ovat aina siirtyneet ilman Screenupdating = True käskyä näytön päivitykseen makron suorituksen loputtua, myös virhetilanteissakin.

    Nykyään pyrin tekemään makroni siten että makron suorituksen aikana näyttöä ei tarvitse päivittää vaan päivitys tapahtuu makron lopussa.

    Äänestä

  • unohtui edellisestä koodista kuvaruutupäivityksen laitto poispäältä. Lisäsin vielä EnableEvents koodiin.

    Sub Koe()
    On Error GoTo virhe
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    'koodia
    MsgBox "Makro suoritettu", vbInformation
    Application.ScreenUpdating = True
    Exit Sub
    virhe:
    MsgBox "Virhe makroa suoritettaessa", vbInformation
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    On Error GoTo 0
    End Sub

    Äänestä

  • Excelisti kirjoitti:

    >Mahdollisten virhetapausten johdosta PITÄÄ EHDOTTAMASTI rakentaa hyppy koodissa, jolla varmistetaan kuvaruutupäivityksen päälle otto tai muuten excel ei jatkossa päivitä mitään näytölle.<

    Hmm... En ole havainnut samaa. Minun makroni jossa olen käyttänyt Screenupdating = False ovat aina siirtyneet ilman Screenupdating = True käskyä näytön päivitykseen makron suorituksen loputtua, myös virhetilanteissakin.

    Nykyään pyrin tekemään makroni siten että makron suorituksen aikana näyttöä ei tarvitse päivittää vaan päivitys tapahtuu makron lopussa.

    muistelin lukeneeni joskus netistä, että joissakin versioissa vaatii arvon palauttamista takaisin True.

    Sub a()
    '
    ' a Macro
    ' Macro recorded 1/12/2003 by OzGrid.com
    '

    '
       Application.ScreenUpdating = False
       'YOUR CODE
       Application.ScreenUpdating = True
    End Sub
    Note how we have set the ScreenUpdating back to True on completion. While Excel will set this back to True whenever focus is passed back to Excel (your macro finishes) in most cases, it pays to play it safe and include the code at the end.

    kuten edellisessäkin sanotaan useimmissa tapauksissa, silti varmuuden vuoksi-ei pidä luottaa MS

    >Mahdollisten virhetapausten johdosta PITÄÄ EHDOTTAMASTI rakentaa hyppy koodissa, jolla varmistetaan kuvaruutupäivityksen päälle otto tai muuten excel ei jatkossa päivitä mitään näytölle.<
    tämä juontaa juurensa kyllä tolle Application.Enable Events=False tapaukselle. Se vaatii sen.Muistelin sitä kun kirjoittelin.

    Kiitos tarkennuksesta.

    Äänestä

  • Kunde kirjoitti:

    unohtui edellisestä koodista kuvaruutupäivityksen laitto poispäältä. Lisäsin vielä EnableEvents koodiin.

    Sub Koe()
    On Error GoTo virhe
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    'koodia
    MsgBox "Makro suoritettu", vbInformation
    Application.ScreenUpdating = True
    Exit Sub
    virhe:
    MsgBox "Virhe makroa suoritettaessa", vbInformation
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    On Error GoTo 0
    End Sub

    Sub Koe()
    On Error GoTo virhe
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    'koodia
    MsgBox "Makro suoritettu", vbInformation
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Exit Sub
    virhe:
    MsgBox "Virhe makroa suoritettaessa", vbInformation
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    On Error GoTo 0
    End Sub

    Äänestä

Kommentoi aloitusta


...välkkymättä kirjoitti:

Moi, onko jotakin helppoa keinoa seuraavaan "ongelmaan".

Mulla on excelissä makro joka suorittaa määrätyt toiminnot.
Makro toimii hyvin.

Mutta, näytöllä näkyy makron suorituksen aikana kaikki toiminnot, käsittääkseni makron saisi suoritettua myös ns. taustalla, niin ettei se "välky" kokoajan näytöllä. Näytöllä olisi tiimalasi makron suorituksen aikana ja kun makro on suorittanut tehtävänsä niin näytölle tulee lopputulos. ( tai msg-box jossa olisi viesti "Valmis" OK-painikkeen kera )

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu