Excel - různé triky

Od: Datum: 21.05.13 16:54 odpovědí: 17 změna: 03.06.13 11:30

Zdravím,

chtěl bych se zde dotázat na pár užitečných typů v excelu, hlavně prosím o pomoc p. @figurek

K čemu vlastně slouží tyto závorky na konci názvů maker?

Např.

Sub Macro1()

Sub Macro2()

Jak makra zkopírovat a použít na více tlačítek jen aby byly posunuty třeba o řádek níže?

Děkuji


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 22.05.13 12:44
avatar

jj, existuje jen jedna metoda, jak psat programy rychleji. A to : Psat co nejméně. Žádné funkce ani makra neduplikovat, napsat je univerzálně pro všechny varianty, no a potom je spouštět pomocí parametrů. Tyto parametry se vkládají do závorek za názvy.

Tak. to by stačilo, začneme od začátku. Vytvoříme si vlastní funkci.

*

Function Soucet(Cislo1, Cislo2)
Soucet = Cislo1 + Cislo2
End Function
*

Jak vidíte na obrázku, v buňce A4 mám vloženou vlastní funkci se dvěma parametry. Když něco změním vbuňkách A1 nebo A2, změní se i buňka A4.

Vytvořte si pár takových funkcí třeba pro násobení a pro víc parametrů. Až vám tvoření funkcí půjde samo od sebe, pak popojedeme dál.

Vlastní funkce se vkládá úplně normálně jako každá excelácká funkce. Najdete ji v menu Funkce, Uživatelsky definované.

Já nic nehledám a volání funkcí píšu ručně. Je to rychlejší.

Ohodnoceno: 0x
 
Od: martin22
Datum: 22.05.13 16:04

Děkuji,

super, ano to znám, umím to. Provedete mě o krok dále?

Děkuji ;)

Datum: 22.05.13 16:48
avatar

oukej, vidím že už začínáte tušit, k čemu závorky jsou. Tak přidáme. Dobře se podívejte, jaké makro jsem si vymyslel. Je to makro, které mi do jakési mojí buňky vloží jedničku. O té mojí buňce jsem řekl svému PC, že ji má považovat za Range. Range je klíčové slovo VBA, označující políčko nebo víc políček v excelovské tabulce.

MojeBunka je pojmenování, které jsem si vymyslel.

Vy si můžete vymyslet jiné, (JakasiBunka nebo Policko nebo JakesiMojePolicko atd). Ale je tu omezení. Musí to být jedno slovo a musí být napsané v anglické abecedě.

*

Sub Macro1(MojeBunka As Range)
MojeBunka.Value = 1
End Sub

*

No a po stisku tlačítka si zavolám svoje makro a řeknu svému PC, kterou buňku má v makru použít.

*

Private Sub CommandButton1_Click()
Call Macro1(Range("A2"))
End Sub

*

Stiskem tlačítka zavolám Macro1 a to použije buňku A2, do které vloží jedničku. Kdybych tam napsal

Call Macro1(Range("A10")) , pak použije buňku A10.

Tak co? Není to zase taková věda, že ne? Ale tohle je pořád jen takový čajíček pro začátek.

Ohodnoceno: 0x
 
Od: martin22
Datum: 22.05.13 16:09

Já to udělal do tabulek jednoduše = A1+A2, myslel jste to takto?
Jen mi nejde do hlavy jak jste otevřel okno Visual Basic - Book 1 a do něj napsal ty hodnoty.

Datum: 22.05.13 16:53
avatar

nemyslel. Ta funkce pro součet je demo. Nic víc. Samozřejmě že normální excelák by takovouhle funkci nikdy nepoužil.

Okno VBA se otevírá klasicky, přes menu Developer. To jsme tu už dělali, ne?

doplněno 23.05.13 12:41:

těžko radit, když pořádně nevím, co vaše makra vlastně mají dělat. Samozřejmě že každé makro můžete okopírovat. Dělá se to úplně stejně, jako každé kopírování textu v každém textovém editoru. Okopírujete makro, změníte mu název, upravíte v něm odkazy na buňky a spustíte ho jiným tlačítkem. Pak se obejdete i bez parametrů, závorky zůstanou prázdné.

Call Macro1()

Akorát že místo jednoho makra jich budete mít deset. Cokoliv budete ve vašich makrech potřebovat opravit, budete opravovat desetkrát. :) Školácká chyba.

Ohodnoceno: 2x
 
Od: martin22
Datum: 23.05.13 10:53

Dobrý den,

nějak mi to nejde. Mám makro s názvem třeba "Makro1" toto makro jsem udělal aby mi zkopírovalo a udělalo nějaká funkce v jednom řádku, makro jsem přiřadil tlačítku.

Nyní jsem udělal asi dlaších 10tlačítek a chtěl bych přiřadit tyto makra k těmto dalším tlačítkům jen aby se to provádělo vždy k řádek níže k příslušnému tlačítku.

Jde to nějak udělat? Děkuji vám

Od: martin22
Datum: 23.05.13 13:33

Ano máte pravdu, pokud makro kopíruji a upravuji ručně, tak všechno jde, mám radost

Chtěl bych Vás poprosit zda by jste mě nenaučil něco dalšího užitečného v excelu?

Moc rád se učím, jen samotnému mi to nejde.

Děkuji

Datum: 24.05.13 08:07
avatar

naučte se cyklovat. Občas potřebujete použít cyklus a ten do čistého excelu jiným způsobem nedostanete.

Máte páru o cyklech? Zkusíme cyklus For.

Mrkněte se na makra, každé z nich maluje trochu jinak.

*

Sub Macro3()
Dim i As Byte
For i = 1 To 5
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, i * 10, i * 10, 60, 60)
.Fill.ForeColor.SchemeColor = i
.Line.Weight = 2
.Line.ForeColor.SchemeColor = i + 1
End With
Next i
End Sub

Sub Macro4()
Dim i As Byte
For i = 1 To 8
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, i * 10, i * 10, i * 10, i * 10)
.Fill.ForeColor.SchemeColor = i
.Line.Weight = 2
.Line.ForeColor.SchemeColor = i + 1
End With
Next i
End Sub

Sub Macro5()
Dim i As Byte
For i = 1 To 8
With ActiveSheet.Shapes.AddShape(msoShape5pointStar, i * 10, i * 10, i * 10, i * 10)
.Fill.ForeColor.SchemeColor = i
.Line.Weight = i
.Line.ForeColor.SchemeColor = i + 1
End With
Next i
End Sub

Ohodnoceno: 0x
 
Od: martin22
Datum: 24.05.13 14:54

Ano po zkoůírování makra mi to udělalo to samé.

Teď se chci zeptat jak jste takové makro vytvořil? A k čemu se to mohlo hodit?

Děkuji

Datum: 26.05.13 07:24
avatar

no tak jednak je to docela zábava učit se VBA tímto způsobem a za druhé, teď vám ukazuji řízení grafiky. Excel+VBA dokáží grafické objekty vytvářet nebo jim řídit pozici a viditelnost. Umíte pojmenovávat grafické tvary? Dělá se to podobně, jako pojmenovávání buněk. Vyberete grafický tvar a vlevo nahoře v tabulce máte políčko namebox. Tam ho pojmenujte.

A hned si to můžeme zkusit. Nakreslete obdélník a pojmenujte ho obdelnik (kratke i) no a pak zkuste spustit makra tady dole, no a něco uvidíte. :)

*

Sub makro1()
ActiveSheet.Shapes("obdelnik").Fill.Transparency = 1
End Sub

Sub makro2()
ActiveSheet.Shapes("obdelnik").Fill.Transparency = 0.5
End Sub

Sub makro3()
ActiveSheet.Shapes("obdelnik").Fill.Transparency = 0
End Sub

Sub makro4()
For i = 0 To 1 Step 0.002
DoEvents
ActiveSheet.Shapes("obdelnik").Fill.Transparency = i
Next i
End Sub

*

No a jestli se pořád ještě ptáte k čemu že řízení grafiky vlastně je, pak vám prozradím, že je to mimořádně silná vlastnot, o které lidi ani netuší, že ji Excel má. Například v závislosti na výsledku výpočtu se vám přímo v tabulce objevují různá schemata nebo obrázky. Skoro nikdo neví, že Excel dovede nejen počítat, ale i kreslit technické výkresy.

Ohodnoceno: 0x
 
Od: martin22
Datum: 28.05.13 09:02

Děkuji,

je to na mě už moc. Nenaučil by jste mě zase ještě něco zajímavého, když se v tom tak dobře pohybujete?

Děkuji

Od: martin22
Datum: 28.05.13 09:12

Jak udělat i něco takového, že si v buňce vyberu ze seznamu měn "EUR, CHF, USD, GBP"?

Datum: 28.05.13 12:39
avatar

Zas jako obvykle žádná věda.

Zapátrejte mezi prvky ActiveX a najdete tam součástku se jménem ComboBox. Ta má vlastnost Linkedcell, to je propojení na nějakou buňku, ve které se bude objevovat vybraná hodnota.

Další vlastnost je ListFillRange. Ta vám určí buňky, odkud má ComboBox data načítat do svého seznamu.

Ohodnoceno: 0x
 

 

Od: martin22
Datum: 29.05.13 16:18

Ano jste opravdu dobrý, funguje to :)

Zajímalo by mě však jak na to všechno mám přijít? Je to někde popsané když něco budu chtít udělat? Třeba jak jste přišel na to jak zadávat hodnoty u tohoto příkladu " ListFillRange a ComboBox"? Mě by to v životě nenapadlo.

Vím je že u staršího excelu to šlo daleko jednodušeji.

Děkuji vám

Datum: 29.05.13 17:00
avatar

jj, věc vypadá hrůzostrašně, bariéra která před vámi stojí je stále ještě hodně vysoká. Jen si ale všiměte, že většina vlastností se opakuje u všech prvků a logika věci je železná. Co platí pro jeden, platí i pro druhý i pro třetí. Pak si také všiměte, že těch prvků je vlastně jen několik a vlastností které budete používat, je taky sotva pár. No a pak to chce umět anglicky a a sedět u toho, zkoušet a experimentovat tak dlouho, až se kousky pospojují a problém se najednou vyjasní. A vy se pak divíte jak vlastně jednoduché programování grafiky Windows je a jak je možné, že tomu všemu lidi vůbec nerozumějí.

Ale především musíte pořádně zatížit to, co máte mezi ušima. Teprve pak se dostanete i tam, kam jiní ani nevidí.

Ohodnoceno: 0x
 
Od: martin22
Datum: 29.05.13 22:09

Ano je to opravdu asi jen o tom, zkoušet to. Jen nechápu proč se to všechno vymýšlí tak složitě, možná pro to, aby si to každý sám neudělal.

Co se dá ještě zajímavého naučit v excelu kromě maker? Rád se zase poučím něco více.

Děkuji

Od: martin22
Datum: 03.06.13 11:30

Díky, neznáte ještě nějakou zajímavost v excelu?

Děkuji

 

 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.