Výkaz pracovní doby

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Výkaz pracovní doby

Příspěvekod honz/a » 24 čer 2013 20:05

Vytvořil jsem výkaz pracovní doby, který má za úkol nakopírovat zadanou pracovní dobu (šedohnědá oblast s časy) do zadaného kalendářního měsíce (měsíc - změna v žlutém poli).

1) Moje přání by bylo vzorce, které jsem zadal do buněk H8:K32 zadávat makrem, které by do buňky napsalo jen čas z tabulky ( šedohnědá oblast) tak, aby v poli nebyl vzorec jako nyní, ale pouze hodnota (třeba 7:00). Je to z toho důvodu, že doba se může v jednom dni změnit a to si já přepíši ručně, sloupec checker pouze zkontroluje, zda je součet pracovní doby v týdnu požadovaný počet za týden (nejčastěji 40 hodin).

Mám problém s tím, že neumím v VBA napsat aby se v buňce vyhodnotil vzorec a napsala se pouze jeho hodnota, pročítal jsem zde forum a vždy mi to na něčem skončilo nepovedené.


2)Dále bych potřeboval makro, které by nastavilo tisk na pouze první stránku listu a nabídlo okno z možností volby tiskárny.

3) A poslední věc je udělat posuvník, nebo číselník, který by posunul datum o jeden měsíc nahoru nebo dolů, aby se nemuselo přepisovat datum ručně ve žlutém poli.


http://uloz.to/xbAkfB7K/platy-xlsm
Přílohy
platy.xlsm
(28.22 KiB) Staženo 69 x
Naposledy upravil(a) honz/a dne 24 čer 2013 20:33, celkem upraveno 2 x.

Reklama
d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16106
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod d1amond » 24 čer 2013 20:12

Vítej na PC-HELP

Pro příště dej přílohu přímo do příspěvku, jsme moderní fórum a toto zvládáme ;)

Výsledky Checker jsou v buňce vedle pondělí záměrně?

Dialog pro tisk s výběrem tiskárny se volá zkratko ctrl p. Umím to na tlačítko, ale nevím jestli tam dokážu předat parametr.
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod honz/a » 24 čer 2013 20:28

1) moderní možná jsme, ale až ted jsem objevil políčko příloha, omlouvám se

2) checker kontroluje od pondělí do pátku, proto je to u pondělí, vždy na počátku týdne, je to jen pro nějaký vizuální dojem

3) vím jak se tiskne, ale chtěl jsem to udělat na tlačítko po kterém rovnou vyskočí výběr tiskárny, ale už nebudu muset říkat, co chci tisknout, vždy to bude pouze první strana

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod cmuch » 24 čer 2013 20:58

Ad3)
Zobrazení výběru tiskárny, tisk první stránky

Kód: Vybrat vše

Application.Dialogs(xlDialogPrinterSetup).Show

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod honz/a » 24 čer 2013 21:22

to si myslím, že je vyřešené, za tohle děkuji



cmuch píše:Ad3)
Zobrazení výběru tiskárny, tisk první stránky

Kód: Vybrat vše

Application.Dialogs(xlDialogPrinterSetup).Show

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod cmuch » 28 čer 2013 12:31

--
3) A poslední věc je udělat posuvník, nebo číselník, který by posunul datum o jeden měsíc nahoru nebo dolů, aby se nemuselo přepisovat datum ručně ve žlutém poli.

Na toto bych použil prvek formuláře ČÍSELNíK kde si ho přes pravé tlačítko přispůsobíš a do buňky s datumem bych vložil vlastní formát buňky 0" / 2013"

--
1) Moje přání by bylo vzorce, které jsem zadal do buněk H8:K32 zadávat makrem, které by do buňky napsalo jen čas z tabulky ( šedohnědá oblast) tak, aby v poli nebyl vzorec jako nyní, ale pouze hodnota (třeba 7:00). Je to z toho důvodu, že doba se může v jednom dni změnit a to si já přepíši ručně, sloupec checker pouze zkontroluje, zda je součet pracovní doby v týdnu požadovaný počet za týden (nejčastěji 40 hodin).

Tak si zkus přes záznamník maker toto naprogramovat.
- Naprogramuj vzorce
- nakonec můžeš označit oblast, dát kopírovat a vložit jinak - pouze hodnoty

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod honz/a » 28 čer 2013 15:25

pokud se někdo podíval do maker, už tam jeden takový pokus byl, ale nebudu nahrávat makro pro 120 buněk, když je to otázka vyplnění matice pro dvě proměnné i,j, mám problém to dát do jazyku VBA, ne vyřešit algoritmus a ještě to nahrávat

je vidět, že se po změně řádku mění hledaná hodnota pro svyhledat, po změně sloupce sloupec pro vyhledávání,

H: =KDYŽ(T8=$T$8;KDYŽ(SVYHLEDAT(S8;$U$9:$V$15;2;0)=0;"";SVYHLEDAT(S8;$U$9:$V$15;2;0));"")
pro další řádek H
H: =KDYŽ(T9=$T$8;KDYŽ(SVYHLEDAT(S9;$U$9:$V$15;2;0)=0;"";SVYHLEDAT(S9;$U$9:$V$15;2;0));"")
potřebuji zavést proměnné pro automatické zpracování


I : =KDYŽ(T8=$T$8;KDYŽ(SVYHLEDAT(S8;$U$9:$W$15;3;0)=0;"";SVYHLEDAT(S8;$U$9:$W$15;3;0));"")
J: =KDYŽ(T8=$T$8;KDYŽ(SVYHLEDAT(S8;$U$9:$X$15;4;0)=0;"";SVYHLEDAT(S8;$U$9:$X$15;4;0));"")
K: =KDYŽ(T8=$T$8;KDYŽ(SVYHLEDAT(S8;$U$9:$Y$15;5;0)=0;"";SVYHLEDAT(S8;$U$9:$Y$15;5;0));"")

tohle je reálný problém na úrovni, ne jako když tady zápasí někdo s podmínkou když.

potřebuji návod jak zkloubit programování a jíž definované vzorce v Excelu

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod cmuch » 28 čer 2013 17:52

Co takto?

Kód: Vybrat vše

Sub Vzorce_pro_HIJKL()

    'Sloupec H
    Range("H8").FormulaR1C1 = _
        "=IF(RC[12]=R8C20,IF(VLOOKUP(RC[11],R9C21:R15C22,2,0)=0,"""",VLOOKUP(RC[11],R9C21:R15C22,2,0)),"""")"
    Range("H8").AutoFill Destination:=Range("H8:H38"), Type:=xlFillDefault
 
    'Sloupec I
    Range("I8").FormulaR1C1 = _
        "=IF(RC[11]=R8C20,IF(VLOOKUP(RC[10],R9C21:R15C23,3,0)=0,"""",VLOOKUP(RC[10],R9C21:R15C23,3,0)),"""")"
    Range("I8").AutoFill Destination:=Range("I8:I38"), Type:=xlFillDefault
 
    'Sloupec J
    Range("J8").FormulaR1C1 = _
        "=IF(RC[10]=R8C20,IF(VLOOKUP(RC[9],R9C21:R15C24,4,0)=0,"""",VLOOKUP(RC[9],R9C21:R15C24,4,0)),"""")"
    Range("J8").AutoFill Destination:=Range("J8:J38"), Type:=xlFillDefault
 
    'Sloupec K
    Range("K8").FormulaR1C1 = _
        "=IF(RC[9]=R8C20,IF(VLOOKUP(RC[8],R9C21:R15C25,5,0)=0,"""",VLOOKUP(RC[8],R9C21:R15C25,5,0)),"""")"
    Range("K8").AutoFill Destination:=Range("K8:K38"), Type:=xlFillDefault
   
    'Sloupec L
    Range("L8").FormulaR1C1 = _
        "=IF(RC[-4]="""","""",(RC[-3]-RC[-4])+IF(RC[-2]="""",0,(RC[-1]-RC[-2]))-R9C29)"
    Range("L8").AutoFill Destination:=Range("L8:L38"), Type:=xlFillDefault

End Sub

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod honz/a » 28 čer 2013 18:41

ještě jsem si přidal:

Kód: Vybrat vše

For j = 8 To 11
                  For i = 8 To 38
             Cells(i, 14) = Cells(i, j)
            Cells(i, j) = ""
            Cells(i, j) = Cells(i, 14)
        Cells(i, 14) = ""
   
                  Next i
        Next j


převede to vzorce jen na číselné hodnoty, takže pokud někdo něco bude chtít přepsat, přepíše čísla (taky to jde, že to nebudu dělat buňku po buňce, ale vyberu celou oblast a s tím udělám 2x překopírování)

Celkové přemýšlím, jak by to šlo napsat ještě ekonomičtěji, tj. spojit to tvoje a to moje do jednoho zápisu . Za to tvoje tě moc děkuji, splňuje to přesně funkčnost.

Teď už jen ten posuvník, nad kterým pořád také přemýšlím.

A také jsem si vzpomněl, že je příkaz

Kód: Vybrat vše

Application.ScreenUpdating = False
- vše proběhne na pozadí a je vidět až výsledek

lubo.
Level 2
Level 2
Příspěvky: 192
Registrován: červen 13
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod lubo. » 28 čer 2013 19:27

Pár drobných poznámek:

Používáš zbytečně komplikované vzorce:

Např.:
Místo

=KDYŽ(DENTÝDNE(G8;2)=1;"Po";KDYŽ(DENTÝDNE(G8;2)=2;"Út";KDYŽ(DENTÝDNE(G8;2)=3;"St";KDYŽ(DENTÝDNE(G8;2)=4;"Čt";KDYŽ(DENTÝDNE(G8;2)=5;"Pá";KDYŽ(DENTÝDNE(G8;2)=6;"So";"Ne"))))))

stačí

=HODNOTA.NA.TEXT(G8;"ddd")


Pokud lehce upravíš tabulku $U$9:$Y$15 pak např. v H8 místo
=KDYŽ(T8=$T$8;KDYŽ(SVYHLEDAT(S8;$U$9:$V$15;2;0)=0;"";SVYHLEDAT(S8;$U$9:$V$15;2;0));"")

stačí napsat:
=KDYŽ(T8=$T$8;SVYHLEDAT(S8;$U$9:$V$15;2;0);"")

Úprava je jednoduchá - do prázdných buněk napiš ' (jednoduchá uvozovka)


Protože předpokládám, že celá operace s mezerami je A) kvůlu vzledu, B) kvůli odečítání přestávky na oběd tak s tabulkou nemusíš dělat nic,

Nulové časy skryjete formátem - uživatelský formát:

Kód: Vybrat vše

h:mm;;
(ty středníky tam mají být)
Zápornému času zamezíte v L8 např.: =MAX(0;I8-H8+K8-J8-$AC$9)
Potom ovšem místo "" ve vzorcích pište 0

H8: =KDYŽ(T8=$T$8;SVYHLEDAT(S8;$U$9:$V$15;2;0);0)

Mimochodem ten kód co jsi psal m;6e3 napsat i jinak a myslím i čitelněji:
Stačí:

Kód: Vybrat vše

   With Range("H8:K38")
      .Value = .Value
   End With

honz/a
nováček
Příspěvky: 17
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod honz/a » 28 čer 2013 20:09

Komplikované vzorce mám, asi je to z důvodu, že jsem naposledy viděl Pascal a tam funkce hodnota.na.text nebyl :D, ale díky za postřehy, já jsem začátečník, samouk a tímto se neživím (navíc toto celé vzniká z důvodu toho, že bych měl psát vše ručně každý měsíc). U tebe je vidět, že máš už něco za sebou.

Ještě bych potřeboval posuvník, který by změnil ve žlutém poli jen měsíc a ta změna tím posuvníkem by spustila celý ten přepočet, tedy to samovyplnění pracovní doby. Pak už jen přidám tlačítko na tu tiskárnu a je to hotové.

Možná bych taky ocenil nějaké postřehy v sloupci checker, který má za úkol počítat zda je v tom týdnu vykázána pracovní doba 40 h (respektive pole s požadovanou pracovní dobou), sloupec chybí v týdnu má za úkol zjistit kolik minut chybí v týdnu do požadovaného počtu, sloupec do pá plní dopočet pokud týden nezačíná pondělím, sloupec chybí do pátku je dopočet pro týden nezapočatý pondělím.

Jinak rozmístění všeho je tam uděláno pro přehlednost a spíše moji kontrolu, ve výsledku to tam nebude jen sloupeček O,P,Q,R a šedivé tabulky pro zadání doby.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Výkaz pracovní doby

Příspěvekod cmuch » 28 čer 2013 20:32

Ten posuvník jsem psal 6 příspěvků výše.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pracovní NTB - 30K
    od popcorn » 31 led 2024 09:26 » v Rady s výběrem hw a sestavením PC
    2
    706
    od Martab Zobrazit poslední příspěvek
    04 úno 2024 12:24
  • Pracovní / herní PC - cca 65 000 Kč.
    od XartiQ » 07 bře 2024 11:42 » v Rady s výběrem hw a sestavením PC
    7
    1138
    od Alferi Zobrazit poslední příspěvek
    08 bře 2024 09:45
  • Pracovní/Herní PC kolem 40k bez DPH
    od korbisko » 29 kvě 2024 09:20 » v Rady s výběrem hw a sestavením PC
    3
    1040
    od Alferi Zobrazit poslední příspěvek
    31 kvě 2024 08:14
  • Herní/pracovní PC s periferiemi pc 50-55k bez case
    od majkl 11 » 03 čer 2024 14:56 » v Rady s výběrem hw a sestavením PC
    2
    352
    od Alferi Zobrazit poslední příspěvek
    03 čer 2024 16:43
  • Pracovní stanice i9 9900, 48GB DDR4,RTX 4000 8GB,SSD+8TB HDD
    od DeNNI85 » 25 črc 2023 10:10 » v P: Hardware
    3
    3532
    od DeNNI85 Zobrazit poslední příspěvek
    20 srp 2023 18:41

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů