Nejste přihlášen/a.

Přihlásit se do poradny

 

Funkce v ms excel 2010

Od: vencaxxx odpovědí: 9 změna:

Zdravim, potreboval bych vyresit nasledujici problem
vytvoril jsem si makro na vlozeni objektu do dokumentu a potreboval bych, aby se provedlo bud jedno nebo druhe makro podle podminky. podminkou je hodnota v urcite bunce v sesitu, tzn. pokud zadam napr. 1 tak se provede makro1 a pokud vlozim 2 tak se provede makro2.
jde to vubec? da se nejak vlozit makro do funkce (v tomhle pripade by sla pouzit funkce kdyz), nebo to musim naprogramovat ve VBA?

 

 

9 odpovědí na otázku
Řazeno dle hodnocení

 

 

dzordz*

2x

Samozřejmě, že to jde Vytvoříte třetí makro, které bude obsahovat pouze if (list!buňka.value = 1) then

call makro1

else

call makro2

end if

Spouštět pak budete vždycky to nové makro a to podle dané hodnoty spustí jedno ze stávajících. Jestli tam může být i jiná hodnota než tyhle dvě, vložíte do else větve další if podmínku pro dvojku.

vencaxxx

a muzete mi jeste poradit jak tohle priradim k nejake bunce? tzn, pokud se napr. v bunce A1 objevi 1 tak se provede makro jedna a pokud neco jineho tak makro 2?

dzordz*

To už není tak jednoduché, musela by se použít aktivace při události (worksheet_change() pro ruční zadávání, worksheet_calculate() pro změnu při přepočtu). Nestačilo by tam dát tlačítko, kterým si to pokaždé spustíte ručně? Nebo to spouštět ručně přes Alt+F8.

Říkáte, že to vkládá nějaký objekt. U automatiky byste musel navíc ještě sledovat, co už to vložilo, a před dalším vložením to staré smazat.

vencaxxx
jo stacilo by tlacitko kterym bych to spustil, na zaklade hodnoty v te bunce by se to vlozilo a konec. to makro by probehlo jenom jednou.
dzordz*

Kliknutím pravým někam na panel si zapnete panel Ovládací prvky, vložíte tlačítko, upravíte tvar název barvu atd, ukončíte režim návrhu, vlezete do maker, rozkliknete vlevo odpovídající list, nahoře z (General) přepnete na CommandButton1 (nebo jiný název, podle toho, jak se to tam vložilo), vygeneruje vám to proceduru název_Click() a do ní přesunete obsah té třetí funkce, kterou jste si napsal. (nebo vlastně tu třetí funkci můžete jenom přejmenovat na tenhle název události, pokud víte, jak se má jmenovat)

 

figurek*

2x

Nejjednodušší a nejspolehlivější metoda je tato :

okopírujte a přes schránku vložte do modulu s vašimi vlastními funkcemi kod dole. Pak vložte funkci JakSpustitMakro do listu a odkažte ji na vaši buňku.

Function JakSpustitMakro(cislo)
If cislo = 1 Then Call makro1
If cislo = 2 Then Call makro2
JakSpustitMakro = ""
End Function

Sub makro1()
MsgBox "Spusti se kod makra 1"
End Sub
Sub makro2()
MsgBox "Spusti se kod makra 2"
End Sub

vencaxxx

super, díky, tohle je presne co jsem potreboval

vencaxxx
jeste se mi nedari vyresit jak to udelat, aby se funkce spustila az po stisku tlacitka. takhle se provede hned po vlozeni hodnoty do bunky...
figurek*

pak to nebude funkce, ale normální subrutina. Adresu Range("A1") opravte podle vaší startovací buňky. Např Range("B10") nebo Range("C5") atd. Jen dejte pozor na tu okolnost, když potom někdy přesunete vaši startovací buňku na listu, musíte ručně opravit její adresu v makru. Ta se nemění automaticky, jako když přesunete buňku v čistém Excelu.

Sub JakSpustitMakro()
If Range("A1") = 1 Then Call makro1
If Range("A1") = 2 Then Call makro2
End Sub

Do modulu tlačítka vložte další sub. Vaše tlačítko se asi jmenuje jinak než BtnInsert.

Private Sub BtnInsert_Click()
Call JakSpustitMakro

End Sub

 

 


 

 

 

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.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]