Příspěvky uživatele


< návrat zpět

Strana:  1 2 3 4 5 6 7 8 9   další » ... 16

Jediné co mne narychlo napadá je jednorázově spustit:
Sub Email()

Dim hodnota As String
Dim i As Long

With List1
For i = 5 To .Cells(Rows.Count, 1).End(xlUp).Row
hodnota = .Cells(i, 2)
If hodnota <> Empty Then
.Hyperlinks.Add .Cells(i, 2), "mailto:" & hodnota
End If
Next i
End With

End Sub

PavDD napsal/a:

If konecForm Then 'MsgBox "zmačknul jsi storno"
Exit For
GoTo konec
End If

If konecForm Then
Exit For
GoTo konec
End If

nechal jsem záměrně dvě možnosti jak vyskočit z cyklu
Exit for vyskočí za konec cyklu (Next i)
GoTo konec skočí na návěští konec, tedy přeskočí vše mezi Next i a návěští.
Stačí jen zakomentovat, nebo vynechat, nechtěné ukončení, v tomto případě Exit For

Jinak vynucení deklarace proměnných velice doporučuji včetně deklarace jejich datových typů. https://wall.cz/excel-navod/deklarace-promennych-a-prehled-datovych-typu-vba

Ne to nestačí a navíc by to skončilo chybou.

...Nyní , když stisknu Storno, stejně to čeká ...na pozadí až to odpočítá temch 5 sec....
Protože není stisk tlačítka ošetřen tak, aby přerušil cyklus odpočtu. Zkuste si kód krokovat a uvidíte i příčinu toho, proč se cyklus nepřeruší.

...Možná by pomohlo obecně vysvětlit, jak funguje v obecném formuláři tlačítko Storno, a tl Přerušit. Přerušit taky ukonší chod makra?...
Obecně tlačítka fungují tak, jak je programátor naprogramuje.

Co myslíte tlačítkem Storno a co tlačítkem Přerušit?

...A ještě jeden dotaz, lze schovat křížek v pravém rohu formuláře?...
Jednodušší je zakázat stisk ikony zavření formuláře pomocí metody Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
End If
End Sub
CloseMode určuje příčinu vyvolání - 0=> zavření form z nabídky (křížek)
Cancel nastavením na jinou hodnotu než 0 zastaví událost QueryClose.

Dík za upozornění.
Chyba při použití přepisu do EN verze (používám záznam makra k získání EN vzorce).
EN: =IF(F10<DATE(YEAR(TODAY()),7,20),"20.07."&YEAR(TODAY()),"20.07."&YEAR(TODAY())+1)
Já to pochopil tak, že když je aktuální datum menší než požadovaný, tak je výsledek 20.7. aktuálního roku a po dosažení datumu 20.7. se zvýší o 1 rok.
Tedy dle Vašeho vzorce:
CZ: =DATUM(ROK(F10)+(F10>DATUM(ROK(F10);7;20));7;20)
EN: =DATE(YEAR(F10)+(F10>DATE(YEAR(F10);7;20));7;20)


ale je to "jen" o znaménku +/- ve vzorci.

Použít vyhodnocení stavu buňky F10 např.:
CZ: =KDYŽ(F10<DATUM(ROK(DNES());7;20);"20.07."&ROK(DNES());"20.07."&ROK(DNES())+1)
EN: =IF(F10<DATE(YEAR(TODAY()),7,20),""20.07.""&YEAR(TODAY()),""20.07.""&YEAR(TODAY())+1)

Pomocný sloupec O bude obsahovat součet všech hodnot požadovaných v buňce F6, pro O3=L3+M3+N3
buňka F6 pak bude mít vzorecCZ: =SVYHLEDAT(E6;K:O;5;0)
EN: =VLOOKUP(E6;K:O;5;0)

Více https://support.microsoft.com/cs-cz/office/svyhledat-funkce-0bbc8083-26fe-4963-8ab8-93a18ad188a1

Pokud jsem to pochopil správně, pak např.:
buňka E6CZ: =DATUM(ROK(DNES());12;31)
EN: =DATE(YEAR(TODAY()),12,31)

buňka F6CZ: =SVYHLEDAT(E6;K:L;2;0)
EN: =VLOOKUP(E6;K:L;2;0)

Použijte
Sub vlastnizahlavi()

Dim poznamka As String

poznamka = InputBox("Zadej vlastní záhlaví :", "OKNO", "")

With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "Text 123456 + : " & poznamka
.RightHeader = ""
End With

End Sub

"Scraper" napsal/a:

...Existovala by prosím , možnost jak list PLAN , kde se tvoří úkony trochu ulehčit ?...

Lze např. generovat pouze vybraný týden, bez nutnosti mít vše dopředu rozplánováno, tzn. vygeneroval by se pouze daný týden.
Nevím pozadí celé funkčnosti a potřeb přehledu, ale určitě by se dalo víc věcí zautomatizovat.

Narychlo - modul PlanCinnosti

Problém je, že v kartách listů máte odkazy do listu plánu. To mi moc smyslu nedává, protože listy strojů by měly obsahovat data a ne odkazy na jiné listy.

Chtělo by to pak sjednotit i list číselník podle skutečných Karet strojů a z něj pak načítat do listboxu (taky upraveno načítání při inicializaci formuláře).

To nejste o moc starší než já (4 roky není nic).

Pokud jde tedy jen o vytvoření plánu na rok, pak bych místo kolikrát za jaké období zvolil variantu kolik týdnů v roce provést, tedy místo 1x týdně => 52, 1xza 14 dní => 26, ...

To lze pak jednoduše odpočítat od prvního týdne a plánovat na celý rok. Následně bych vygeneroval na začátku roku "Plán" a pak už jen zobrazit daný týden.

Pokud není nutné mít pro každý stroj 6 řádků (zbytečných), lze vše zapisovat do jedné buňky ke každému stroji.

např. https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/listbox-control-list-property-example

Asi bude něco špatně?
Z popisu těžko soudit kde nastala chyba, v makru nebo mezi klávesnicí a židlí?

Nějaký výtvor kde se to projevuje?

Chtělo by zapracovat na systému nastavení kontrol, vytvořit číselník četnosti provedení, zápisy provedených prohlídek (např. u karty strojů v řádku úkonu), pak se dá dopočítat následné provedení kontroly a není nutné mít vyplněno 52 sloupců, když se dá pak podle dat vygenerovat jen ten příslušný týden. Takhle vlastně není stanoven odstup jednotlivých úkolů mezi sebou, tedy kdy byl úkon proveden a kdy má být proveden další.

List plán by se tak dal generovat podle aktuálních dat a nebylo by nutné mít předdefinováno pro každý stroj 6 řádků natvrdo.

Jinak kód pro vytvoření seznamu k tisku
'********************************************************
Columns("E:BE").Select
Selection.EntireColumn.Hidden = True
cislosloupce = 5 + hodnota2
...
'*****prvni týden****************************************
If cislosloupce = 6 Then
Columns("F:F").Activate
Selection.EntireColumn.Hidden = True
Columns("F:F").ColumnWidth = 50
tydenc = Range("F1")
Range("A1").Activate
Set Rng = Range("F1:F577")
i = 1
For counter = 1 To Rng.Rows.Count
If Rng.Cells(i) = 0 Then
Rng.Cells(i).EntireRow.Hidden = True
i = i + 1
Else
i = i + 1
End If
Next
Range("A1").Activate
který se opakuje 52 x lze zapsat do jednoho cyklu, který obslouží jakýkoli týden
With Sheets("Plan")
.Columns("E:BE").EntireColumn.Hidden = True ' skrytí sloupců týdne
cislosloupce = 5 + hodnota2
tydenc = hodnota2
.Columns(cislosloupce).ColumnWidth = 50 ' zviditelnění vybraného týdne
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(i, cislosloupce) = 0 Then
.Rows(i).EntireRow.Hidden = True
End If
Next i
Range("A1").Activate
End With


Pokud by mělo jít jen o pouhé generování "plánu", pak bych to asi řešil prachsprostým odpočítáváním týdnů.
1x týdně - 52x
1x za 14 dní - 26x (každý sudý nebo lichý)
1x za 3 měsíce - 4x (1, 13, 26 a 39t)
1x za 1/2 roku - 2x (1 a 26t)
1 x za rok - 1x (52t)
jen netuším od kdy má výpočet začít. Od prvního týdne v roce nebo od nějakého konkrétního datumu?


Strana:  1 2 3 4 5 6 7 8 9   další » ... 16

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Makro smyčka

MilanKop • 18.4. 7:18

Makro smyčka

elninoslov • 18.4. 0:18

Makro smyčka

MilanKop • 17.4. 21:33

Automatické generování souborů

Majki • 17.4. 13:48

Automatické generování souborů

elninoslov • 17.4. 13:27

Automatické generování souborů

Majki • 17.4. 13:25

Automatické generování souborů

elninoslov • 17.4. 13:11