Auttakaa viisaammat

Uunoa

Ongelma on tämä. Tarkoitus olisi seurata prosessiin käytettyä kokonaisaikaa. Saan kokonaisajanajan kyllä näkymään, mutta reaaliaika näkyy aina vasta sitten kun painan "F9" eli Excel päivittyy tietokoneen aikaan. Onko mahdollista saada Excel päivittämään itse itsensä, sanotaanko vaikka 5 minuutin välein, ettei tarvitsisi aina käydä näppäämässä. Vielä hienompaa olisi jos aika näkyisi kokoajan reaaliajassa.

14

934

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ___________

      Vaikuttaako tämä...

      Työkalut / asetukset-laskenta-välilehti ja "täppä" kohtaan ...Laskenta "automaattisesti".

      • Nimimerkki

        Tuo auttaa jos taulukossa tapahtuu muutoksia jatkuvasti, mutta jospa kysyjä halusi taulukolla mitata muuhun työhön kulunutta aikaa, eli käynistää kellon ja alkaa tekeen töitä muilla taulukoilla, silloin tuo kyseinen taulukko ei päivity.

        löysin helpistä OnTime metodin, mutta en ole käyttänyt koskaan, tuolla on mahdollista käynnistää yksi tapahtuma tiettynä kellonaikana, mutta jos tehet makron joka viittaa itseensä niin eikös tuosta saa jatkuvan päivityksen.

        Tässä esimerkissä on käytetty kahta makroa, mutta muokkaa niin että viittaa vain itseensä ?:
        http://support.microsoft.com/default.aspx?scid=kb;en-us;213288

        tässä ohjeista ( vähän hidas linkki, mutta kyllä se tulee sieltä):
        http://msdn2.microsoft.com/en-us/library/aa195809(office.11).aspx

        Eli mielestäni niin että Taulukkoon aloitus aika ja sitten toiseen soluun vaikka minuutin välein =now(), ja lopetuksessa päättymisaika ylös ja OnTimen Sulkeminen

        Googlesta löytyy


      • esim.
        Nimimerkki kirjoitti:

        Tuo auttaa jos taulukossa tapahtuu muutoksia jatkuvasti, mutta jospa kysyjä halusi taulukolla mitata muuhun työhön kulunutta aikaa, eli käynistää kellon ja alkaa tekeen töitä muilla taulukoilla, silloin tuo kyseinen taulukko ei päivity.

        löysin helpistä OnTime metodin, mutta en ole käyttänyt koskaan, tuolla on mahdollista käynnistää yksi tapahtuma tiettynä kellonaikana, mutta jos tehet makron joka viittaa itseensä niin eikös tuosta saa jatkuvan päivityksen.

        Tässä esimerkissä on käytetty kahta makroa, mutta muokkaa niin että viittaa vain itseensä ?:
        http://support.microsoft.com/default.aspx?scid=kb;en-us;213288

        tässä ohjeista ( vähän hidas linkki, mutta kyllä se tulee sieltä):
        http://msdn2.microsoft.com/en-us/library/aa195809(office.11).aspx

        Eli mielestäni niin että Taulukkoon aloitus aika ja sitten toiseen soluun vaikka minuutin välein =now(), ja lopetuksessa päättymisaika ylös ja OnTimen Sulkeminen

        Googlesta löytyy

        A1 aloitusaika esim. "30.1.2007 11:30"
        B1 NYT()
        C1 =NYT()-A1 [muotoilu: aika, "tunnit"). C1:ssä oleva aika päivittyy vain "F9", tai tehtäessä
        muita merkintöjä työkirjassa. Jos olisi mahdollista tehdä reaaliaikapäivitys "NYT()" automaattiseksi, koska menee joskus useita tunteja, ettei tarvitse "näpytellä" mitään. Voisi vain vilkaista ruudulta kokonaisajan.


      • Nimimerkki
        esim. kirjoitti:

        A1 aloitusaika esim. "30.1.2007 11:30"
        B1 NYT()
        C1 =NYT()-A1 [muotoilu: aika, "tunnit"). C1:ssä oleva aika päivittyy vain "F9", tai tehtäessä
        muita merkintöjä työkirjassa. Jos olisi mahdollista tehdä reaaliaikapäivitys "NYT()" automaattiseksi, koska menee joskus useita tunteja, ettei tarvitse "näpytellä" mitään. Voisi vain vilkaista ruudulta kokonaisajan.

        Okei, nyt vähän harjoittelin tuota OnTime metodia ja sain tällaisen kivasti toimimaan:

        Sub Button1_Click()

        Sheet1.Range("A2").Value = Now
        Sheet1.Range("B2").Value = Now TimeValue("00:00:01")
        Sheet1.Range("C2").Formula = "=B2-A2"
        Sheet1.Range("D2").Value = "1"

        Paivita

        End Sub



        Sub Paivita()

        If Sheet1.Range("D2") > 0 Then
        Sheet1.Range("B2").Value = Now
        Application.OnTime Now TimeValue("00:00:01"), "Paivita", False
        End If

        End Sub



        Sub Button2_Click()

        Sheet1.Range("D2").Formula = "0"
        Sheet1.Range("B2").Value = Now

        Paivita

        End Sub


        Kuten huomaat laitoin kaksi nappia, toisesta aloitetaan ja toisesta lopetetaan ajanotto. Sitten laitoin D sarakkeeseen merkin onko ajan otto käynnissä vai ei, tätä tarvitaan jotta jollakin tavalla voidaan päätllä kutsutaanko paivita osiota vai ei, voit itse laittaa tuon piiloon vaikka napin alla olevaan soluun tai muotoilla tekstin väriksi valkoisen.

        False tuon OnTime:n perässä tarkoittaa mielestäni sitä että ei tuo käynnistyisi toista kertaa eli vuorokauden kuluttua uudelleen, tosin helpeissä asiaa ei ihan selvästi sanota, nyt se käynnistyy vain kerran, kumpa tuossa olisi suoraan mahdollista laittaa jokin aika väli niin tuohan olisi helppoa.

        Tuohan ei varmaan tuollaisena vielä sinulle kelpaa:
        -Kun painat uudellen aloita nappia se pyyhkii vanhan pois, parempi olisi varmaan laittaa uusi aika seuraavalle riville, mutta noihan on noita käyttöliittymä juttuja miten oletkin suunitellut tuon itsellesi mahdollisuuksia on varmasti paljon erillaisia.
        -Nyt se päivitys on noin sekuntin välein, nyt näyttää hyvin toiminnan, mutta parempi varmaa laittaa harvemmin päivitys esim 30 sek.
        -tuon voisi laittaa yhdelle napille if vaan tarkistaisi onko ajan otta päällä vai ei
        -hmm. oli pari muutakin mutta unohtui jo.....


    • ihan perusjuttuna
      tee nappi ja muuta Captioniksi "Aloita" ilman lainausmerkkejä ja liitä siihen koodi

      Private Sub CommandButton1_Click()
      If Me.CommandButton1.Caption = "Aloita" Then
      testi = False
      Aloita
      Me.CommandButton1.Caption = "Lopeta"
      Else
      testi = True
      Lopeta
      Me.CommandButton1.Caption = "Aloita"
      End If
      Range("C1").Select'tämä siksi ettei nappula jää aktiiviseksi
      End Sub

      ja moduuliin...

      Public Aika As Date
      Public testi As Boolean
      Sub Aloita()
      On Error Resume Next
      If Not testi Then
      Range("A1") = Format(Now, "hh:mm:ss")
      Range("C1") = ""
      testi = True
      End If
      Aika = Now TimeValue("00:00:01")
      Application.OnTime Aika, "Aloita"
      Range("B1") = Format(Now, "hh:mm:ss")

      End Sub

      Sub Lopeta()
      On Error Resume Next
      Application.OnTime Aika, "Aloita", , False
      testi = False
      Range("C1") = Format(Range("B1") - Range("A1"), "hh:mm:ss")
      End Sub

      Nyt kun klikkaat nappia siinä lukee aloita ja se muuttuu lopeta. Aluksi kirjoittaa aloitus ajan A1 ja kun lopetat niin lopetusajan B1 ja kokonaisajan C1

      Keep Exceling

      • Nimimerkki

        Eikös tuo ole vähän vaarallista laitta ne samaan nappiin, voi olla että vahingossa klikkaa lopetuksen jälkeen uudeleen nappia ja silloin edellinen aika pyyhkintyy pois.

        Tuokin korjaantuisi sillä että uusi aika laitettaisiin edellisen alapuolelle, olisiko liikka pyyttä sinulta tuollaisen lisäyksen, varmati moni lukia voisi käyttää sitä hyväksensä.

        Ja eikös se ole niin että noita aikoja muistissa on vain yksi joten jos käytät toista jossain muualla ohjelmassa esim tuossa toisessa ketjussa beforPrint tapahtumassa käytin, niin toinen pyyhkii toisen pois, elim kutsu aloita muuttuu toiseksi kutsuksi


      • Nimimerkki

        Muuten toimiiko sinulla tnoin:

        Application.OnTime Aika, "Aloita", , False

        Minulla ei toimi, antaa virheilmoituksen
        Tuo voi olla kyllä näitä pieniä eroja Mac / windowsin väillä, kaiken kaikkiaan yllättävän saman lailla kaikii on office Mac / windows:issa


      • Nimimerkki kirjoitti:

        Muuten toimiiko sinulla tnoin:

        Application.OnTime Aika, "Aloita", , False

        Minulla ei toimi, antaa virheilmoituksen
        Tuo voi olla kyllä näitä pieniä eroja Mac / windowsin väillä, kaiken kaikkiaan yllättävän saman lailla kaikii on office Mac / windows:issa

        Todennäköisesti sulla ei ole aika muuttujaa määritelty eli aika on jäljessä ja ei voi silloin lopettaa "ajallaan"


      • Nimimerkki kirjoitti:

        Eikös tuo ole vähän vaarallista laitta ne samaan nappiin, voi olla että vahingossa klikkaa lopetuksen jälkeen uudeleen nappia ja silloin edellinen aika pyyhkintyy pois.

        Tuokin korjaantuisi sillä että uusi aika laitettaisiin edellisen alapuolelle, olisiko liikka pyyttä sinulta tuollaisen lisäyksen, varmati moni lukia voisi käyttää sitä hyväksensä.

        Ja eikös se ole niin että noita aikoja muistissa on vain yksi joten jos käytät toista jossain muualla ohjelmassa esim tuossa toisessa ketjussa beforPrint tapahtumassa käytin, niin toinen pyyhkii toisen pois, elim kutsu aloita muuttuu toiseksi kutsuksi

        semmoiseksi projektin hallinnaksi...
        katsotaan jaksanko huomenna duunailla


      • Nimimerkki
        kunde kirjoitti:

        Todennäköisesti sulla ei ole aika muuttujaa määritelty eli aika on jäljessä ja ei voi silloin lopettaa "ajallaan"

        sorry taas noita minun onnettomia ilmaisuja, olisin voinut heti kirjoittaa tarkemmin mistä se virhe tulee, eli Tuossa testasin tuolla omalla koodillakin

        Toimii minulla
        Application.OnTime Now TimeValue("00:00:01"), "Paivita", False

        Ei Toimi minulla
        Application.OnTime Now TimeValue("00:00:01"), "Paivita", , False

        Joskus aikaisemminkin huomannut että noissa argumenteissa on jaitakin eroja käsittelyn suhteen Mac/ windows:in välillä, eihän tämä mikään suri juttu ole mutta ihan kiinostaa jotta osaa paremmin varautua mahdollisiin pieniin yllätyksiin.


      • KIITOKSET
        Nimimerkki kirjoitti:

        sorry taas noita minun onnettomia ilmaisuja, olisin voinut heti kirjoittaa tarkemmin mistä se virhe tulee, eli Tuossa testasin tuolla omalla koodillakin

        Toimii minulla
        Application.OnTime Now TimeValue("00:00:01"), "Paivita", False

        Ei Toimi minulla
        Application.OnTime Now TimeValue("00:00:01"), "Paivita", , False

        Joskus aikaisemminkin huomannut että noissa argumenteissa on jaitakin eroja käsittelyn suhteen Mac/ windows:in välillä, eihän tämä mikään suri juttu ole mutta ihan kiinostaa jotta osaa paremmin varautua mahdollisiin pieniin yllätyksiin.

        kundelle ja kaikille muillekkin asiaan paneutuneille. Nyt homma toimii hienosti.


      • Nimimerkki kirjoitti:

        Eikös tuo ole vähän vaarallista laitta ne samaan nappiin, voi olla että vahingossa klikkaa lopetuksen jälkeen uudeleen nappia ja silloin edellinen aika pyyhkintyy pois.

        Tuokin korjaantuisi sillä että uusi aika laitettaisiin edellisen alapuolelle, olisiko liikka pyyttä sinulta tuollaisen lisäyksen, varmati moni lukia voisi käyttää sitä hyväksensä.

        Ja eikös se ole niin että noita aikoja muistissa on vain yksi joten jos käytät toista jossain muualla ohjelmassa esim tuossa toisessa ketjussa beforPrint tapahtumassa käytin, niin toinen pyyhkii toisen pois, elim kutsu aloita muuttuu toiseksi kutsuksi

        ekalle riville otsikot
        A1=projektin nimi
        B1=aloitusaika
        C1=kokonaisaika
        D1=käynnissä
        sarakkeen E voi piilottaa
        lisäät pari nappia oletuksineen ja liität niihin koodit

        Private Sub CommandButton1_Click()
        Kaynnista
        End Sub

        Private Sub CommandButton2_Click()
        Lopeta
        End Sub

        ja moduuliin...

        Public Milloin As Double
        Dim Laskuri As Date
        Dim alku As Boolean
        Dim vika As Integer
        Sub Kaynnista()
        alku = False
        Aloita
        End Sub
        Sub Aloita()
        If alku = True Then Exit Sub
        vika = Range("A1").End(xlDown).Row
        For Each Solu In Range("A1:A" & vika)
        If Not Solu = "" And Range("D" & Solu.Row) = 1 Then
        If Range("B" & Solu.Row) = "" Then
        Range("B" & Solu.Row) = Now
        End If
        Laskuri = Now - Range("B" & Solu.Row) Range("E" & Solu.Row)
        Range("C" & Solu.Row).Value = Format(Laskuri, "h:mm:ss")
        End If
        If Not Solu = "" And Range("D" & Solu.Row) = 0 Then
        If Not Range("B" & Solu.Row) = "" Then

        Range("E" & Solu.Row) = Format(Range("C" & Solu.Row), "h:mm:ss")
        Range("B" & Solu.Row) = ""
        End If
        End If
        Milloin = Now TimeSerial(0, 0, 1)
        Next
        Application.OnTime Milloin, "Aloita", , True
        End Sub

        Sub Lopeta()
        On Error Resume Next
        alku = True
        Application.OnTime Milloin, "Aloita", , False
        Range("D2:D" & vika) = 0
        Range("B2:B" & vika) = ""
        End Sub

        Toimii seuraavasti:
        klikkaa nappia 1, joka käynnistää luuppimakron
        kirjoita projektin nimi sarakkeeseen A
        soluun D kirjoita 1(1=käynnissä-0 ei käynnissä)
        soluun B ilmestyy aloitusaika ja soluun C kokonaisaika

        keskeytät projektin kirjoittamalla D soluun 0
        B solu tyhjennetään ja kokonaisaika säilyy
        starttaa uudelleen projekti kirjoittamalla soluun D 1

        makron saat pois toimimasta klikkaamalla nappia 2

        tostahan nyt sitten saa ideaa miten jatkaa
        tietenkin voisi tehdä events jutuillakin, mutta sitä vähän vaikea jalostaa makronauhottajien.


      • Nimimerkki
        kunde kirjoitti:

        ekalle riville otsikot
        A1=projektin nimi
        B1=aloitusaika
        C1=kokonaisaika
        D1=käynnissä
        sarakkeen E voi piilottaa
        lisäät pari nappia oletuksineen ja liität niihin koodit

        Private Sub CommandButton1_Click()
        Kaynnista
        End Sub

        Private Sub CommandButton2_Click()
        Lopeta
        End Sub

        ja moduuliin...

        Public Milloin As Double
        Dim Laskuri As Date
        Dim alku As Boolean
        Dim vika As Integer
        Sub Kaynnista()
        alku = False
        Aloita
        End Sub
        Sub Aloita()
        If alku = True Then Exit Sub
        vika = Range("A1").End(xlDown).Row
        For Each Solu In Range("A1:A" & vika)
        If Not Solu = "" And Range("D" & Solu.Row) = 1 Then
        If Range("B" & Solu.Row) = "" Then
        Range("B" & Solu.Row) = Now
        End If
        Laskuri = Now - Range("B" & Solu.Row) Range("E" & Solu.Row)
        Range("C" & Solu.Row).Value = Format(Laskuri, "h:mm:ss")
        End If
        If Not Solu = "" And Range("D" & Solu.Row) = 0 Then
        If Not Range("B" & Solu.Row) = "" Then

        Range("E" & Solu.Row) = Format(Range("C" & Solu.Row), "h:mm:ss")
        Range("B" & Solu.Row) = ""
        End If
        End If
        Milloin = Now TimeSerial(0, 0, 1)
        Next
        Application.OnTime Milloin, "Aloita", , True
        End Sub

        Sub Lopeta()
        On Error Resume Next
        alku = True
        Application.OnTime Milloin, "Aloita", , False
        Range("D2:D" & vika) = 0
        Range("B2:B" & vika) = ""
        End Sub

        Toimii seuraavasti:
        klikkaa nappia 1, joka käynnistää luuppimakron
        kirjoita projektin nimi sarakkeeseen A
        soluun D kirjoita 1(1=käynnissä-0 ei käynnissä)
        soluun B ilmestyy aloitusaika ja soluun C kokonaisaika

        keskeytät projektin kirjoittamalla D soluun 0
        B solu tyhjennetään ja kokonaisaika säilyy
        starttaa uudelleen projekti kirjoittamalla soluun D 1

        makron saat pois toimimasta klikkaamalla nappia 2

        tostahan nyt sitten saa ideaa miten jatkaa
        tietenkin voisi tehdä events jutuillakin, mutta sitä vähän vaikea jalostaa makronauhottajien.

        Antoi minulle jonkin virheilmoituksen, mutta sillä ei ole väliä, idea selviää tuosta hyvin, ja muutaman yrityksen jälkeen varmaan toimii.

        Eli pointtihan oli juuri tuo seuraavaan riviin viitaus, jokan hoidat näin:

        vika = Range("A1").End(xlDown).Row
        ja
        Range("A1:A" & vika)

        en tiennyt että noin voi tehdä ja eiköhän tuo toimi vaikka vikasta seuraavaan riviin:

        Range("A1:A" & vika 1)

        tarkistin muuten tuosta yhdestä VBA kirjasta ja siinä on luku alueviitauksiin, siinäkään ei mainita tuosta muodosta mitään. Tuo on hieno juttu ja tuosta on varmasti hyötyä jatkossakin.


      • Nimimerkki kirjoitti:

        Antoi minulle jonkin virheilmoituksen, mutta sillä ei ole väliä, idea selviää tuosta hyvin, ja muutaman yrityksen jälkeen varmaan toimii.

        Eli pointtihan oli juuri tuo seuraavaan riviin viitaus, jokan hoidat näin:

        vika = Range("A1").End(xlDown).Row
        ja
        Range("A1:A" & vika)

        en tiennyt että noin voi tehdä ja eiköhän tuo toimi vaikka vikasta seuraavaan riviin:

        Range("A1:A" & vika 1)

        tarkistin muuten tuosta yhdestä VBA kirjasta ja siinä on luku alueviitauksiin, siinäkään ei mainita tuosta muodosta mitään. Tuo on hieno juttu ja tuosta on varmasti hyötyä jatkossakin.

        Toi on todella käyttökelpoinen ja lisättynä Offset ja Resize niin siinäpä jo pelimerkkejä jo piisalle asti
        vika=Range("A1").End(xlDown).Row ja Range("A1:A" & vika)
        hakee siis A1 alaspäin yhtenäisen alueen viimeisen rivin(ei saa olla tyhjiä välissä)

        vika=Range("A65536").End(xlUp).Row ja Range("A1:A" & vika)
        hakee A65536 eli viimeisesta A sarakkeen solusta ylöspäin ja palauttaa A1 & A vika alueen ja näin ollen tolla alueella voi olla tyhjiäkin soluja...

        samat toiminnat sitten vasemmalle ja oikealle

        vika = Range("A1").End(xlDown).Row
        Range("A1:A" & vika).Offset(0, 1).Select

        valitsee sarakkeesta B A sarakkeessa olevan yhtenäisen A1 alkavan alueen kokoisen alueen

        vika = Range("A1").End(xlDown).Row
        Range("A1:A" & vika).Offset(0, 1).Resize(vika-3, 5).Select

        nyt valitsee 3 riviä vähemmän ja laajentaa sarakkeet 5 ja alkaa B sarakkeesta

        joten valinnan saa minne vaan helposti ja sitten kun lisää vielä SpecialCells niin kaikkea mukavaa voidaankin jo tehdä näillä
        Koska kyseessä Range objekti, sillä on paljon ominaisuuksia ja se onkin yksi käytetyin objekti omissa projekteissani

        Keep Exceling


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kuvat! Dannyyn liitetty Helmi Loukasmäki, 22, on puhjennut naisena kukkaan - Some sekoaa: "Sä..."

      Ooo, kaunis aikuinen nainen Helmistä on kasvanut siinä yli 80-vuotiaan Dannyn rinnalla! Katso uudet kuvat: https://ww
      Suomalaiset julkkikset
      55
      3923
    2. Henkirikos Alakylässä

      Nainen löydetty elottomana, mies otettu kiinni. Mitä on tapahtunut?
      Seinäjoki
      47
      2761
    3. Suodatinpussin kastelemalla saa parempaa kahvia

      Kokeilin niksiä ja kyllä tämä kahvi on parempaa nyt. Ei lainkaan maistu paperiselta. Huljuttelee hanan alla suppiloa pap
      Maailman menoa
      132
      2062
    4. Tidätkö nainen

      että suoraan sanottuna v.tut.aa että pääsit näin lähelle minua. Ei olisi oikeasti aikaa tähän mutta silti aina välillä o
      Ikävä
      105
      1816
    5. Mikä on kaivattusi etunimi?

      Otsikossa siis on kysymys eriteltynä. Vain oikeat vastaukset hyväksytään.
      Ikävä
      58
      1248
    6. Onkohan sinulla kaikki hyvin?

      Nyt vähän sellainen outo tunne tuli. Sinun asiasi niin ei minulle toki tarvitse kertoa. Kunhan mietin...
      Ikävä
      38
      1147
    7. Viimeinen reissu tälle kesälle

      Pian se syksy on. Hyvää huomenta ja aurinkoista päivää. ☕🌞🍁🌻🐺❤️
      Ikävä
      173
      1046
    8. En kestä katsoa

      Sitä miten sinusta on muut kiinnostuneita. Olen kateellinen. Siksi pitäisi lähteä pois
      Ikävä
      84
      986
    9. Huikeeta, mahtavaa, ihan mielettömän upeeta

      Me ostettiin talo Espanjasta. Tosin saadaan käyttää sitä vain muutama viikko vuodessa kun on monta muutakin ostajaa! M
      Kotimaiset julkkisjuorut
      179
      982
    10. Oho! Arja Koriseva paljastaa TTK:n ekasta suorasta lähetyksestä: "On vähän ärsyttävä yhtälö!"

      Upea Arja Koriseva! Tsemppiä haasteelliseen tilanteeseen! Lue lisää: https://www.suomi24.fi/viihde/oho-arja-koriseva-
      Suomalaiset julkkikset
      14
      934
    Aihe