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.
Auttakaa viisaammat
14
946
Vastaukset
- ___________
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öytyyA1 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:issaTodennä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 kutsuksisemmoiseksi 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 kutsuksiekalle 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
Trump ja Vance murskasivat ja nolasivat Zelenskyn tiedotusvälineiden edessä Valkoisessa talossa.
Jopa oli uskomaton tilaisuus Valkoisessa talossa. Zelensky jäi täydelliseksi lehdellä soittelijaksi suhteessa Trumpiin j7394973Zelenskyi ei suostunut nöyrtymään Trumpin ja Vancen edessä, siksi meni pieleen
Trumppia täytyy imarrella, silloin homma toimii aina. Tähän Zelenskyi ei suostunut.6734209Mikä on kaivattusi ärsyttävin piirre?
Mun kaivattu on erittäin vastahakoinen puhumaan itsestä. Kääntää puheenaiheen aina muuhun kun hänestä tulee puhetta.1732311Harmi että
Pidät niin vastenmielisenä. Olen minäkin välissä ollut ihan kamala sinulle ja ihmetellyt miten voit minusta tykätä. Se o162087MTV: Katri Helena repäisee kunnolla - Aivan uudessa roolissa TV:ssä - Tätä ei arvannut!
No nyt iskelmälegenda ja koko kansan Katri Helena kyllä repäisee kunnolla! Upeaa heittäytymistä, Katri Helena! Lue, mis401888- 961706
TELIA pakottaa 4G-liittymiä väkisin 5G-liittymiin, vaihtaa ilman lupaa
Ihmisten sopimuksia! https://www.is.fi/digitoday/mobiili/art-2000011063159.html "Telia on lähettänyt osalle 4g-asiakka1711473OP Kaskimaa
Niin sitten pankki vaihtaa nimeään ja pääkonttori siirtyy ties minne. Pulkkisen visio, Kainuu ei kelvannut.301218- 921193
- 941144