Nejste přihlášen/a.
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
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ší.
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.
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.
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.
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
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
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
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
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.
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.
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
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í.
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.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.