< návrat zpět

MS Excel


Téma: funkce now setiny rss

Zaslal/a 14.9.2016 9:36

ahoj, mam v excelu casomiru a chtel bych, aby se zapisovaly i setiny. jak to udelat? mam to pres funkci Now - zacatek zavodu.
dekuji za rady

Sub Cas()
tCasZacatek = Now
tCasKonec = Now
tCas = tCasKonec - tCasZacatek
End Sub
Sub AktualizaceCasu()
UserForm1.Label10.Caption = Format(Now - tCasZacatek, "h:mm:ss")
NextTick = Now + TimeValue("00:00:01")
tCas = tCas + TimeValue("00:00:01")
Application.OnTime NextTick, "AktualizaceCasu"
End Sub

Zaslat odpověď >

Strana:  « předchozí  1 2
#032796
avatar
@eLCHa
No jeden by si myslel, že NOW sa bude správať rovnako v liste aj v kóde.
Vďaka tomuto fóru sa človek dozvie zaujímavé veci, ktoré by ho ani nenapadli.citovat
icon #032797
eLCHa
No jeden by si myslel, že NOW sa bude správať rovnako v liste aj v kóde.

Řekl bych že se jedná o dvě různé funkce a ta VBA bude "hloupější", protože je starší (VB6).citovat
#032798
avatar
Drobná oprava kódu od eLCHa:

Dim nTime As Double, tj. Single nestačí

Ostatně Evaluate, jak eLCHa ukázal, je způsob, jak se dostat i k ostatním funkcím listu kromě těch vybraných pod WorksheetFunction. Na druhou stranu, maticové vzorce Evaluate třeba dost dobře nedává. Dříve jsem také k těmto účelům zneužíval i definované názvy (což je také jedno z míst, kde lze použít Excel4Macro funkce).

Jsou v tom další ale. K některým funkcím se jde drze dostat přímo pod Application, typicky vyhledávací funkce, kdy Error spadne do proměnné, ale nevyskočí žádná hláška.

Jinak nevěřte tomu, že funkce na listu fungují stejně, jako jejich protějšky pod VBA. Ve skutečnosti ve většině případů fungují rozdílně. Ve VBA jsou i jiné limity pro datum. Operátory se leckdy také chovají jinak (MOD aj., který funguje jinak na záporné ose oproti funkci MOD na listu). Stejně tak existují rozdíly mezi já nevím WorksheetFunction.IsNumber a IsNumeric pod VBA. Ono začal bych tím, že PRAVDA (True) pod VBA odpovídá hodnotě -1. Opět, jak víceméně píše eLCHa, VBA a jeho trapný matematický model (VBA.Math z dob Vïsual Basicu 6) nemá nic společného s funkcemi listu.citovat
icon #032799
eLCHa
@xlnc
díky za opravu a doplnění ;)citovat
#032818
avatar
diky, vse funguje, jen mam problem, ze kdyz zkopiruji vysledky stopek do jine tabulky, nechovaji se mi vysledky jako cislo, jak je prevest na cislo?
nebo v te vysledkove tabulce, jak nastavit, at to neni cislo, ale time?
stopky:

Sub stopTimer()

nr = ThisWorkbook.Sheets("stopky").Cells(Rows.Count, 6).End(xlUp).Row + 1

Cells(nr + k, 1).Value = k + 1
Cells(nr + k, 2).Value = Range("E3").Value
Cells(nr + k, 3).Value = Format(tCasZacatek - Now, "h:nn:ss,") & Format(Timer * 100 Mod 100, "00")
Range("E3").Value = 0
Range("E3").Select
k = k + 1
End Sub

tabulka.
.
.
UserForm1.TextBox2.Text = Replace(Cells(i + 1, 3).Text, ",", ".")
.
.citovat
#032823
avatar
Příčina je zřejmá. Funkce Format produkuje výsledek typu String, tedy text. Proto jsem doporučil použití funkce Timer, pokud chci pracovat s výsledkem jako s číslem. Riziko záporného rozdílu časů při překročení půlnoci lze snadno odstranit přičtením 86400 (počet sekund v kalendářním dnu) k zápornému výsledku. Např.:
Zacatek = Timer
Call HodnocenyProces ' provedení měřeného úkonu
Konec = Timer
Rozdil = Konec - Zacatek
If Rozdil < 0 Then Rozdil = Rozdil + 86400
Cells(nr + k, 3).Value = Rozdil / 86400 ' buňka, naformátovaná na "h:m:ss,00"
citovat
#032824
avatar
dekuji, dle vasich rad jsem to nejak upravil a funguje tocitovat

Strana:  « předchozí  1 2

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje