To POKI:
zase malinko přidám. Do procedury uzavření sešitu se dá makro také napsat a pak se nemůže stát, že uživatel "něco zvojtí".
Pokud je to pro "lidi" BFU musíš počítat se vším...
Nesmíš dát šanci něco udělat jinak..... Bohaté zkušenosti co vše se dá zmrvit....
Ale to vše je opravdu na jinou diskuzi...
Jinak POKI jsi machr a vážím si Tvých rad a příspěvků.
Lon
Malinko OT, ale dovolím si reagovat na Pokiho "názor" Pokud by se dalo zajistit, ze uzivatel povoli makra,. Jak říkal můj táta, jde všechno, jenom noviny a malé děti se musí nosit..
Tedy například je řešením skrýt všechny datové listy, ponechat jen jeden s upozorněním, že uživatel nepovolil makra a tedy mu soubor nebude nic platný... Pak v otvírací proceduře tento list skrýt a ostatní zviditelnit. Předpoklad je také zamčený sešit heslem.
To je můj názor na to jak zabezpečit, že uživatel povolí makra.
Stačí zakázat dotaz na výmaz dalších dat a jeho vyhodnocení.
To Jeza.m
upravil jsem to v tvém souboru.
Lon
čárky nahradit středníkem
Podívej se na syntaxi funkce DATUM(rok;měsíc;den)
Netuším proč by měl mazat ' " & l & " '! - je to odkaz na list, ve kterém má data.
Možná bych se zaměřil na druhou podmínku. Není vyhodnocena jako textová.
Teď Excel 2007 (2010) nemám, ale v 2003 je nesprávně vyhodnocena textová podmínka. Chybí uvozovky.
Spíše by to chtělo konkrétní ukázku s daty, aby si nikdo nic nemusel vymýšlet..
Další variantou, která zde nebyla zmíněna, je že otvíraný soubor je jen pro čtení. Má nastaven atribut R.
Pak by chování odpovídalo tomu co popisuješ. Tedy nabízet uložení souboru do standardního adresáře EXCEL.
a ukázku?
možná je to profesionální slepota,taky se mi to stává
a co chybové hlášky???
nebo zaslat ukázku
Nechci být válečný štváč, ale:
radek.Cells(4, 18).Date = "<" & ufSoupiska.tbDo.Value
bych nahradil:
radek.Cells(4, 18).Value = "<" & ufSoupiska.tbDo.Value
třeba
Sub vymaz_radky()
seznam = "List2"
zdroj = "List1"
row_seznam = Sheets(seznam).UsedRange.Rows.Count
row_zdroj = Sheets(zdroj).UsedRange.Rows.Count
i = 2
While i <= row_zdroj
jmeno = Sheets(zdroj).Cells(i, 1)
porovnani = 0
For j = 1 To row_seznam
If jmeno = Sheets(seznam).Cells(j, 1) Then
porovnani = porovnani + 1
End If
Next
If porovnani = 0 And jmeno <> "" Then
Sheets(zdroj).Rows(i).Delete
Else
i = i + 1
End If
Wend
End Sub
List1 (zdroj) obsahuje data všech osob
List2 (seznam) obsahuje seznam jmen pouze vybraných
Je to čitelný kód, tak snad se v tom vyznáš
Konkrétní kód záleží na konkrétním příkladu.
Např For-Next smyčky, nebo while, ....
Zřejmě nejlepší vzorcem vypsat do jiného sloupce podmínku a celý sloupec pak sečít SUMA. Výsledek pak zadávat do formuláře.
Snad jsem pochopil to co popisuješ
Asi bych to řešil dvěma vnořenými cykly.
V prvním (nadřazeném) cyklu bych postupně načítal jména a porovnal je s těmi vybranými. Pokud by se neshodovalo, vymazal bych řádek. Takto až na konec seznamu.
Tímto způsobem se porovnají všechna jména s vybranými a výsledkem by měly být jen ty vybrané.
To je sice hezké, ale co když nebudou spuštěna makra???
Ještě mne napadla jedna myšlenka.
Skrýt všechny listy, zamknout projekt heslem a v proceduře Workbook_Open pak potřebné listy zviditelnit. Samozřejmě pak udělat makro i na proceduru Workbook_BeforeClose, která by zase všechny listy skryla a uložila sešit. Proceduru Before_Save bych zde nepoužil, protože při ukládání by se muselo zakrývat a pak zase odkrývat listy. Pouze ošetřit možnost Uložit jako - tedy znemožnit tuto funkci.
Pokud totiž uživatel nespustí makro a nezná heslo, pak se mu nic nezobrazí a bude odkázán pouze na spuštění makra.
Možná blbost, ale mohlo by to pomoci. Pro obyčejné uživatele určitě ano.
Samozřejmě Pokiho myšlenka je velice vhodná pro kontrolu přístupů. Při omezení na počet přístupů (otevření sešitu) pak místo datumu dát počet otevření a při každém novém otevření sešitu snížit čítač o 1. Pak využít vyhodnocení >0 lze ještě otevřít, 0 poslední otevření a dále nic, <0 lze otevřít kdykoliv (bylo zadáno správné heslo).
Lon.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.