Nejste přihlášen/a.
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?
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.
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?
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.
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)
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
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
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.