Voiko makron tehdä niin, että se esimerkiksi lajittelee taulukon tunnin välein.
Makron suoritus tasatunnein
Rami
102247
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 10
Vanhimmat
Pystyy kun asentaa ajurin CPU:n kellotaajuuden mittariin. Esim. sopiva algoritmi sisäänrakennettuna bittifuusioon.
Jos makro2 on lajittelu makro,
Tämä makro lajittelee taulukon kahden minuutin välein.
Sub Makro1()
With Application
.OnTime Now TimeValue("00:00:05"), "makro2"
.OnTime Now TimeValue("00:02:05"), "makro2"
End With
End Sub
En ole asiantuntija, mutta onnistui kahden minuutin välein, niin varmaan onnistuu tunninkin välein.
Ei jouda kokeilemaan alkaa Milanin ja Liverpooliin peli.
moduuliin...
Public Aika As Date
Private Sub Auto_Close()
Application.OnTime Aika, "Lajittele", , False
End Sub
Private Sub Auto_Open()
' muuta kellonaika käynnistyy nyt 12:00,huomioi, että aika pitää olla "tulevaisuudessa" kun käynnistät makron
' käynnistyy joka päivä klo 12:00
Application.OnTime TimeValue("12:00:00"), "Lajittele"
End Sub
Sub Lajittele()
'lisätään Auto_Openissa määritettyyn käynnistysaikaan 1 tunti
Aika = Now TimeValue("01:00:00")
Application.OnTime Aika, "Lajittele"
'tähän koodia
End Sub
Noista saan tehtyä vaikka mitä.
Kunden Auto_Close() herjaa suljettaessa
Application.OnTime Aika, "Lajittele", , False. riviä
Mutta kun pysäytän makron sulkee työkirjan?
Ei näköjään toimikkaan Auto_Closessa...
Mutta lisää ThisWorkbook moduuliin seuraavat tapahtumakoodit niin ei herjaa.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Aika, "Lajittele", , False
End Sub
Private Sub Workbook_Open()
Application.OnTime TimeValue("12:00:00"), "Lajittele"
End Sub
ja tavalliseen moduuliin
Public Aika As Date
Sub Lajittele()
'lisätään Auto_Openissa määritettyyn käynnistysaikaan 1 tunti
Aika = Now TimeValue("01:00:00")
Application.OnTime Aika, "Lajittele"
'tähän koodia
End Sub
Mistä löytyy ThisWorkbook moduuli?
Tavallinen moduuli on ilmeisesti Alt F11 ja Insert , Module.
Minulla suomenkielinen Excel.
Alt F11 ja VBA editori aukeaa.ThisWorkbook on siellä ja et voi sitä poistaa...
ei tarvitse lisätä. Lasit vaan nenälle...
En vieläkään ymmärrä mihin se ThisWorkbook koodi pitäs liittää. Kun painan Alt F11 aukeaa tumma ikkuna?? "Lasit on kyllä nenällä"
Alt F11 ja aukeaa VBA editori. Nyt pitäisi näkyä Projekti-ikkuna ,jos ei näy niin Ctrl R tai View/Project Explorer. Projekti ikkunasta kaksoisklikkaa ThisWorkbook moduulia(arkinkuva ,jossa vihreä X ).
Tavallisen moduulin osasitkin jo lisätä Insert/Module ja sitten seuraat vain edellisiä ohjeita.
Kyllä Auto_Close tapahtumakoodikin toimii,mutta vaatii,että makro Lajittele on kerran suoritettu (sama juttu muuten BeforeClose tapahtuman kanssa).Virheilmoitus tulee sen takia, ettei ole makroa mitä perua...
No tietenkin sen voi korjata lisäämällä virheen käsittelyn.
esim. module1 kaikki koodit
Public Aika As Date
Sub Lajittele()
'lisätään Auto_Openissa määritettyyn käynnistysaikaan 1 tunti
Aika = Now TimeValue("01:00:00")
Application.OnTime Aika, "Lajittele"
'tähän koodia
End Sub
Sub Auto_Close()
On Error Resume Next
Application.OnTime Aika, "Lajittele", , False
End Sub
Sub Auto_Open()
On Error GoTo virhe
Aika = TimeValue("12:00:00") 'muuta aloitusaika
Application.OnTime Aika, "Lajittele"
Exit Sub 'normaali poistuminen Subista
virhe: 'jos makroa Lajittele ei löydy
MsgBox "makroa Lajittele ei löydy", vbInformation, "makronsuoritus virhe"
End Sub
Löytyihän se ThisWorkbook ja muutkin Moduulit.
Nyt sulkeutui herjaamatta. Kiitoksia.