Makron suoritus tasatunnein

Voiko makron tehdä niin, että se esimerkiksi lajittelee taulukon tunnin välein.
102247
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

Pystyy kun asentaa ajurin CPU:n kellotaajuuden mittariin. Esim. sopiva algoritmi sisäänrakennettuna bittifuusioon.

Äänestä

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.

Äänestä
  • 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

    Äänestä

  • Kunde kirjoitti:

    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?

    Äänestä

  • Rami kirjoitti:

    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

    Äänestä

  • Kunde kirjoitti:

    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.

    Äänestä

  • Rami kirjoitti:

    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...

    Äänestä

  • Kunde kirjoitti:

    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ä"

    Äänestä

  • Rami kirjoitti:

    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

    Äänestä

  • Kunde kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


Rami kirjoitti:

Voiko makron tehdä niin, että se esimerkiksi lajittelee taulukon tunnin välein.

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