» Poradna » Programy

VBA v Excelu, chyba kompilace

 |   |  Microsoft Windows 7 Firefox 21.0

V Excel tabulce mám dva sloupce. První obsahuje kód výrobku, např. "10.450" a do druhého chci doplnit jeho cenu, kterou najde VBA funkce "Hledej" v tabulce na druhém listu v sešitě, kam jsem načetl data v textovém tvaru z katalogu v PDF. Druhý list tedy obsahuje jeden sloupec s řádky s textem. VBA funkce hledej nejdříve prohledá celý list TXT a zjisti, zda tam najde kód výrobku, předaný funkci z prvního sloupce v prvním listu. Pokud ano, zavolá VBA funkce Hledej podprogram "Cena", kterému předá pozici nalezeného řádku v druhém listě TXT s daným kódem a začně od daného řádku hledat cenu pro daný kód výrobku. Ta ale nemusí být hned na stejném řádku s nalezeným kódem, ale může být dále i několik dalších řádku (mezi kódem výrobku a jeho cenou může být doprovodný text). Cena je vždy na jednom řádku ukončena v textu znaky ",-" a může být v následujích variantách: " 23,-" " 123,-" " 1 124,-" a " 12 345,-". Tj. v případě ceny větší než 1.000,- Kč je trojice číslic oddělena mezerou, a před začátkem vlastního číselného údaje ceny je také mezera. V textu ale může být i "...rozměry 125 m2 1 234,- nejlepší výrobek...".Nevím proč mi při spuštění funkce hlásí VBA chybu:Compile error:Expected Function or variablea podtrhne slovo "Cena" při volání tohoto podprogramu ve funkci Hledej.Program mám zatím jen v "pracovní fázi" a potřebuji ho odladit krokováním. To mi teď ale kvůli té chybě nejde. Vypadá to, že je nějaký problém s definicí proměnných nebo funkcí a podprogramem samotným. Ve VBA běžně neprogramuji.Global vArr As VariantPublic Function Hledej(kod As String) As StringDim j As LongDim Up As LongHledej = "Ne"vArr = Range("TXT!A1:A18160")Up = UBound(vArr)For j = LBound(vArr) To UBound(vArr)If Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows 7 Firefox 21.0

Na konci programu se mi ještě schovalo:End IfEnd IfNext kEnd Sub

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Opera 9.80

To bude tim, ze mas CENA definovane jako proceduru, ktera nic nevraci a pouzivas ji jako funkci. Deklaruj ji jako funkci, ne jako SUB

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 21.0

Díky, už to běhá .

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: 10, Long, Kompilace, Cena, Then, Doprovodný text, Trojice