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
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....
...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?...
...A ještě jeden dotaz, lze schovat křížek v pravém rohu formuláře?...
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 ?...
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.
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?
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.