Budu pozorně sledovat diskusi na dané téma, protože jsem se v daném ohledu zatím nikdy ničeho kloudného nedobral. Dlouhou řadu dní, které jsem věnoval studiu úprav ribbonu, shrnu do vlastního poznatku, že mne tato kapitola Excelu na základě mých dosažených výsledků uvedla do pocitu nespokojenosti a neúspěšnosti. Otevření tématu zde mi třebas prozradí důvod mých potíží.
Místo pokusů o vytváření vlastních ribbonových karet jsem začal používat formuláře (MS Forms), pomocí nichž bez problémů simuluji staré-dobré lišty nástrojů, o které mne ribbonový Excel připravil. Tato technika mi plně vyhovuje a např. pro komunikaci s doplňky se chová víc než uspokojivě.
Napsaný kód sice poskytuje správný námět na způsob řešení, ale použít se v této podobě nedá. Předpokládám, že existují dvě řídící buňky, které při změně hodnoty v nich mají vyvolat změnu velikosti buněk v nějaké úplně jiné oblasti.
Pro takto popsanou úlohu by fungovalo např. toto:
Private Sub Worksheet_Change(ByVal Target As Range)
' změna velikosti buněk v oblasti D10:H20
' pomocí změny řídících hodnot v A1:A2
' buňka A1 obsahuje výšku buněk pro oblast
' buňka A2 obsahuje šířku buněk pro oblast
Select Case Target.Address(0, 0)
Case "A1": Range("D10:H20").RowHeight = Range("A1").Value
Case "A2": Range("D10:H20").ColumnWidth = Range("A2").Value
End Select
End Sub
Ladysi, rád čtu, že jsi! Už dávno jsem neměl tu čest o tobě slyšet. Tipoval jsem někoho takového, jako ty, kdo by na to mohl přijít. Udělal jsi mi radost! Jinak nepokládám za důležité, aby každá věc měla své okamžité použití. Stačí, když o ní vím, a časem se to třebas hodí.
Skvělý nový rok!
Dobrá rada! Jen to nezkoušejte najít v přímé nápovědě k Excelu - z ní ten popis jaksi vypadl . Strýček Google je v této otázce nepoměrně štědřejší! Ale i české heslo "excel rozšířený filtr" je na netu poměrně štědré (a navíc bez angličtiny).
krakonosek napsal/a:
2Vovka, ale vse na co se tazu tak je k excelu
Před časem jsem si dal dohromady různé postupy, jak získat seznam unikátních hodnot z obecného seznamu. Jen jedna z technik v tomto mém přehledu vede na použití maticového vzorce. Pokud mám tu potřebu, chodím si sem pro rozumy. Od té doby, co jsem si to poskládal, nemám potřebu chodit jinam.
K tomu mohu dodat jen to, že nástroj LightShot má právo žít vlastním životem, nezávislým na Excelu. Ten nástroj jsem dosud neznal a jen těžko ho proto mohu soudit. Navíc - toto fórum je na téma Excel, a k Excelu jsem se vyjádřil.
Formát, jak je napsaný, produkuje pro 0 až 9 hodin dvě mezery zcela právem: první z nich je mezera mezi oběma částmi časového údaje, druhá je produkována levým znakem "h" v použitém formátu. Pro vynechání té druhé mezery by formát musel vypadat "yyy-mm-dd h-mm-ss"
Elninoslov má pravdu v tom, že zdánlivě jednoduchá úloha má svá mnohá úskalí. Když jsem se pokusil rozvinout myšlenku, se kterou přišel Marjankaj o svoje rozšíření, vyšel mi z toho taky dost velký kód:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
On Error Resume Next
Range(Cells(1, 1), Cells(Target.Row - 1, 1)) _
.Find(What:=Target, LookAt:=xlWhole).Activate
If Err = 0 Then
Application.EnableEvents = False
If IsEmpty(Target.Offset(1, 0)) Then
Target.ClearContents
Else
Application.Undo
MsgBox "Změněná hodnota by byla duplicitní", _
vbExclamation, "ZMĚNA HODNOTY"
End If
Application.EnableEvents = True
End If
End Sub
Řešení, které poslal Marjankaj, se mi velmi líbí. Jde o kompaktní a úplné řešení problému v podobě, jak ho tazatel definoval. Pro vlastní potřebu bych do něj doplnil ještě likvidaci zadané hodnoty na místě Target (pokud byla nalezena jinde) a zabezpečení toho, aby se vyhledaná původní hodnota posunula do viditelné oblasti na monitoru. V této podobě by si to mělo najít bohaté uplatnění.
Mně se ten zip hlásí jako prázdný. Z takového podkladu jsem nezmoudřel!
Indicie č.3:
Funkci, která zobrazí skryté heslo, lze zavolat v podobě
MsgBox Dekrypt(ActiveSheet.UsedRange)
Na listu nejsou umístěny žádné jiné objekty kromě buněk a skrytý nápis je skrytý právě v nich. Když si zjistíte, jak maličká je UsedRange na tom listu, jste už velmi blízko cíli!
Indicie č.4:
Skryté heslo spolehlivě zničíte pomocí následujícího kódu:
Range("A3").Copy
Range("A3:J7").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
Doufám, že teď už víte, kam se vydat!
To zadání je velmi neurčité. Co se má dít, když za sebou budou ležet tři stejné hodnoty? Kam se mají zjištěné hodnoty kopírovat? Na stejné místo na novém listu, od začátku řádku...?
CHYBÍ PŘÍLOHA !!!
Když už jsem to vymyslel, tak to posílám pro srovnání
Mám malý dárek v vánocům. Kdysi před léty jsem to párkrát použil a pak se mi to úplně ztratilo z aktivní paměti. Včera se mi ta funkce vynořila z hlubin zapomnění v důsledku tohoto vlákna. Problém ale byl v tom, že jsem ji nebyl schopný vyvolat a v nápovědě mezi klávesovými zkratkami jsem ji nenašel. Až před malou chvílí se mi to povedlo.
O co jde? Vytvořte si sloupeček údajů a umístěte kurzor na první volnou buňku pod ním. A teď to kouzlo:
Alt + šipka dolů
Výsledek je podle mne dost užitečný k tomu, aby si ho člověk zapamatoval. Proč tato klávesová zkratka v nápovědě Excelu chybí, to snad vědí jen u Microsoftů...
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.