Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  108 109 110 111 112 113 114 115 116   další » ... 298

Skúste niečo takéto, len nástrel...
Sub pokus()
Dim ssgBanka As String
Dim sgPrescasy As Double
Dim sgBanka As Double

sgPrescasy = 4.5
While ssgBanka <> "False" And Not IsNumeric(ssgBanka)
ssgBanka = Replace(Application.InputBox(Prompt:="Zadej počet přesčasových hodin", Default:=sgPrescasy, Type:=2), ".", ",")
Wend
If ssgBanka <> "False" Then sgBanka = CDbl(ssgBanka)
End Sub

Ale dajte viac informácií:
...tieto 4 si budete môcť potom meniť, ale potrebujem ich vedieť aj teraz...
Na ktorom riadku začína kontrolovaná oblasť?
Na ktorom riadku končí?
Na ktorom stĺpci začína?
Na ktorom stĺpci končí?

"na konci každého riadka" - čo to znamená, že každý riadok končí na inom mieste? Ak áno, čo určuje kde je koniec? Ak to tak nieje, tak ktorý stĺpec je určený na zápis dátumu.

"vložím alebo zmením hocijaké číslo" - to znamená, že v oblasti sú aj nečísla, a keď sa zmenia tie, tak sa dátum nemení? Ak áno, tak treba uchovávať v skrytom liste kompletne minulý stav oblasti pre porovnanie čo bola pôvodná hodnota. S tým súvisí aj otázka čo robiť ak je zmenení číslo na nečíslo a opačne.

Dátum sa má zapísať aj keď sa vymažú údaje? Teda zmažem jednu bunku, má sa zapísať dátum? Alebo zmažem všetky bunky v riadku, má sa zapísať dátum?

Môže nastať viacoblastná zmena? Teda 1 bunka z riadku 4, druhá z riadku 7, tretia z riadku 20 ... ?

...

Dalo aj nedalo.

V Exceli je možné zapnúť Iteračný výpočet, potom sa dá vo vzorci odkazovať v bunke sa samu seba, čo sa dá využiť, pri kontrole s inou bunkou. Teda zmení čas iba ak je iná bunka rozdielna. Ale akonáhle to otvoríte na PC kde nieje Iteračný výpočet zapnutý je to v háji.

Potom by to možno šlo urobiť tak, že by bolo síce makro, ale ako doplnok do Excelu. Normálne hore v lište. A buď by to neustále kontrolovalo, či nieje otvorený daný zošit, alebo by sa musel daný zošit tlačítkom v lište "zaregistrovať" obslužnému makru v doplnku. Vtedy by tiež už samotný súbor nemusel byť XLSM.

Všetky 3 riešenia sú z nejakého dôvodu naprd.

No to rozhodne nieje. Dá sa v ňom robiť všeličo, ale presnejšej grafiky sa nedočkáte. Kruh nevytlačí ako kruh, nestále farby podľa verzie Office, nedá sa predvídať či text vojde do buky pri tlači alebo na stránku. Žiaľ ale na to nebol ani vôbec plánovaný 1

Niečo podobné ako makrom tu? Ak áno treba pridať prílohu, aby bolo jasné, ktorá presne oblasť sa má kontrolovať, a kam sa zapisuje čas.

To záleží od konkrétneho makra, čo robí, s akými vstupmi/výstupmi počíta. Každopádne je vhodné pri komplikovaných makrách odkazovať na konkrétne listy (kľudne aj premenné), nie na ActiveSheet, ľahko sa Vám môže stať, že si poškodíte data, ak budete napr. debugovať a prepnete list. Prípadne čo ak užívateľ spustí makro z iného listu...

Každopádne to ale nerieši Váš problém. Na to, aby Vám na to ktokoľvek pozrel, musíte to makro zverejniť. No ak má to makro rozsah >64 KB, tak to len tak nebude. Také veľké makro bude asi nahrané cez Macro Recorder, nie ? Ten tam ľúbi nasekať poriadne zbytočnosti, ale k tomu sa opäť môžeme vyjadriť až po zverejnení prílohy a popisu makra. Bez toho nič.

A čo sa stane ak bude kód umiestnený v samostatnej procedúre, ktorú z Worksheet_Change zavoláte ?

Prípadne kód rozdeľte na samostatné čiastkové alebo parametrizované procedúry. Obmedzenie je 64 KB.

Nie nefunguje!
1. opravte si oddelenie mien:
Anetta. Aneta
Maxmilian, Maxmilián,Maximilian
Amálie. Libuše
Oliver Olivia, Olívie
Michaela ,Michala

2. Vzorec sa musí upraviť tak, aby hľadal presné meno, nie iba jeho časť. Teda pridať oddeľovač mien ", " na začiatok aj koniec:
=MIN(IF(IFERROR(SEARCH(", "&B1&", ";", "&B3:B368&", ");0)>0;C3:C368))
=MIN(KDYŽ(IFERROR(HLEDAT(", "&B1&", ";", "&B3:B368&", ");0)>0;C3:C368))

Inak Vám totiž na tieto nájde zlý dátum, lebo sú časťou iného mena:
Gabriel      Dita         Ema          Ota          Alex         Ivo          
Emil         Kamila       Jarmil       Antonin      Jan          Ivan         
Ladislav     Petr         Nora         Libor        Viktor       Lada         
Alena        Bohuslav     Marcel       Nina         Erik         Bohdan       
Evžen        Martin       Tibor        Ondřej       Iva          Julia        
Dana         Daniel       Dan          Miloslav     Šimon        Simon        
Simeon       Štěpán

3. Tieto mená sú tam 2x (v rôznych dátumoch):
Kamila
Petr
Miloslav

4. Ak by ste chcel eliminovať dátum 0 (0.1.1900), ktorý dostanete pri neexistujúcom mene, tak treba zmeniť vzorec na takýto:
=IFERROR(INDEX(C3:C368;MATCH(TRUE;SEARCH(", "&B1&", ";", "&B3:B368&", ")>0;0));"")
=IFERROR(INDEX(C3:C368;POZVYHLEDAT(PRAVDA;HLEDAT(", "&B1&", ";", "&B3:B368&", ")>0;0));"")

alebo tento nematicový:
=IFERROR(LOOKUP(TRUE;SEARCH(", "&B1&", ";", "&B3:B368&", ")>0;C3:C368);"")
=IFERROR(VYHLEDAT(PRAVDA;HLEDAT(", "&B1&", ";", "&B3:B368&", ")>0;C3:C368);"")

PS: V Office 2010 CZ je potrebné funkciu IFERROR premenovať na CHYBHODN. Vo vyšších verziách Office CZ sa už podľa všetkého dá použiť aj názov IFERROR. Ak máte ešte starší Office 2003, treba IFERROR funkciu nahradiť konštrukciou
IF(ISERROR(X);0;X)
KDYŽ(JE.CHYBHODN(X);0;X)

maticový?
=INDEX(C3:C368;MIN(IF(IFERROR(SEARCH(B1;B3:B368);0)>0;ROW(B3:B368)-2)))
=INDEX(C3:C368;MIN(KDYŽ(IFERROR(HLEDAT(B1;B3:B368);0)>0;ŘÁDEK(B3:B368)-2)))

alebo iba
=MIN(IF(IFERROR(SEARCH(B1;B3:B368);0)>0;C3:C368))
=MIN(KDYŽ(IFERROR(HLEDAT(B1;B3:B368);0)>0;C3:C368))

Našiel som ešte jeden zaujímavý vzorček bez tabuľky, len je potrebné si skontrolovať tie dátumy v poli:
=LOOKUP(--TEXT(D1;"mdd");{101\121\220\321\421\521\621\724\824\924\1024\1123\1222;"Kozoroh"\"Vodnář"\"Ryby"\"Beran"\"Býk"\"Blíženci"\"Rak"\"Lev"\"Panna"\"Váhy"\"Štír"\"Střelec"\"Kozoroh"})
=VYHLEDAT(--HODNOTA.NA.TEXT(D1;"mdd");{101\121\220\321\421\521\621\724\824\924\1024\1123\1222;"Kozoroh"\"Vodnář"\"Ryby"\"Beran"\"Býk"\"Blíženci"\"Rak"\"Lev"\"Panna"\"Váhy"\"Štír"\"Střelec"\"Kozoroh"})

=IFERROR(INDEX($F$3:$F$7;MATCH(1;($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7);0));"Chyba")
=IFERROR(INDEX($F$3:$F$7;POZVYHLEDAT(1;($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7);0));"Chyba")

alebo nematicový
=IFERROR(INDEX($F$3:$F$7;SUMPRODUCT(($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7)*(ROW($F$3:$F$7)-2)));"Chyba")
=IFERROR(INDEX($F$3:$F$7;SOUČIN.SKALÁRNÍ(($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7)*(ŘÁDEK($F$3:$F$7)-2)));"Chyba")

či
=IFERROR(INDEX($F$3:$F$7;SUMPRODUCT(($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7)*{1;2;3;4;5}));"Chyba")
=IFERROR(INDEX($F$3:$F$7;SOUČIN.SKALÁRNÍ(($D$1>=$B$3:$B$7)*($D$1<=$D$3:$D$7)*{1;2;3;4;5}));"Chyba")

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, Name As String, iName As Integer, vShow, iShow As Integer

If Not Intersect(Range("A1"), Target) Is Nothing Then
vShow = Range("A1").Value

If Not IsEmpty(vShow) And IsNumeric(vShow) Then
iShow = Val(vShow)

Application.ScreenUpdating = False

For Each ws In ThisWorkbook.Worksheets
With ws
Name = Replace(.Name, "List", "")
If Name <> "Master" And IsNumeric(Name) Then
iName = Val(Name)
If iName <= iShow Then .Visible = xlSheetVisible Else .Visible = xlSheetHidden
End If
End With
Next ws

Application.ScreenUpdating = True
End If

End If
End Sub

Máte tam priloženú chybnú prílohu. Nahrajte ju znova.

Prílohu XLSM môžete pridať iba zabalenú do ZIP. Tu máte návrh riešenia, bez kontroly či obsahuje list nejaké dáta, či existuje list a pod.:
Sub Copy2Sheet()
Dim LastRow As Long, List As String
With Sheets("TABKOL")
LastRow = .Cells(Rows.Count, "B").End(xlUp).Row
List = .Range("AB2").Value
Sheets(List).Range("A1:Y" & LastRow).Value = .Range("B1:Z" & LastRow).Value
Application.Goto Sheets(List).Range("A1")
End With
End Sub

A nebude stačiť použiť písmo WingDings na Label ?


Strana:  1 ... « předchozí  108 109 110 111 112 113 114 115 116   další » ... 298

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