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 )
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 )
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
Kiitos Kunde.
Mä testaan tänään.
>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.
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
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.
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