< návrat zpět
MS Excel
Téma: Null v podmínce VBA
Zaslal/a Koci 15.4.2010 9:38
Ahoj,
dělám tu jedno makro a dostal jsem se k jistému problému a nevím kudy z něj
Mám proceduru kde volám tento dotaz:
Application.WorksheetFunction.Match(Cells(4, 16), Stredisko, 0)
S tím, že proměná "Stredisko" je typu Range a má odkaz na oblast buněk s údaji. Vše funguje naprosto parádně až do chvíle, kdy hledaná hodnota v oblasti "Stredisko" není. Je sice správně zadaná na počet míst, ale neexistuje.
Snažil jsem se přijít nějak na to, jak tam dát jednoudchou podmínku If..Then..Else, ale nevím co porovnávat, pač volaná metoda vždy hodí chybu, že hodnotu nemůže najít. Někde jsem se dočetl, že by se to mohlo řešit snad dotazem na "Null", ale tam má zkušenost s VBA zatím nesehá. Můžete někdo poradit nějaký dotaz, kterým bych se VBA zeptal, zda funkce Match proběhla a vrátí hodnotu, než hodí VBA chybu, že tuto operaci nelzé provést?
Děkuji moc
Poki(15.4.2010 10:54)#001477 Tohle je slozitejsi udalostni procedura.
Na rozdíl od _Change se _Calculate spousti vzdy kdyz dojde k prepocitani listu - tedy, pouziva se tam, kdy potrebujes spustit makro v pripade, ze se zmeni bunka prostrednictvim prepoctu vzorce. Bohuzel vsak dojde ke spusteni vzdy, kdyz se list prepocita (dojde ke zmene vysledne hodnoty ve vzorci), tedy i v pripade, ze tam mas nekde na listu vzorec =DNES nebo =NÁHČÍSLO (nebo i další)
Udalostni procedura _Change se naproti tomu spusti pouze, kdyz do nejake bunky zadas jinou hodnotu, nez kterou obsahovala a stiknes ENTER (nebo prejdes na jinou bunku)
citovat
Koci(15.4.2010 11:00)#001478 Jo takhle, super.. ted je mi to tedy úplně jasné.
Seženu někde seznam těhle "auto spouštěčů", na kdy se spouští? Tod vše, děkuju moc za vysvětlení a asi se zase brzo ozvu
citovat
Poki(15.4.2010 11:03)#001479 Seznam nemusis nikde shanet, je primo ve VBE (Visual Basic Editor).
Kdyz ses v modulu listu (nebo sesitu ThisWorkbook), tak jsou nahore 2 comboboxy, kde v levym vyberes Worksheet (resp. Workbook) a v pravym uz mas seznam tech "spoustecu" - staci vybrat a VBE ti rovnou do modulu hodi nazev)
citovat