Dobrý den
objevil se mi následující šotek, se kterým si nevím rady: při prvním spuštění makra se mi objeví (někdy!, ne pokaždé) hláška "podprocedura nebo funkční procedura není definována" a vysvítí se mi buď řádek s voláním procedury "numform(numberformatstring,numberformatid)", někdy ale řádek volající proceduru "line_manager". Přitom obě procedury existují. Když otevřu příslušný modul s touto procedurou a zase ho zavřu (bez jakékoliv úpravy), program můžu normálně spustit bez chybového hlášení.
Obě problémové procedury jsou v jedné společné knihovně, každá v samostatném modulu. Nepomohlo ani přejmenování, přemístění do jiné knihovny ani pokus použít "sub" místo "function"
deklarace:
Dim numberformatstring As string (jako společná proměnná před procedurou Main)
volání(z procedury Main, knihovna Libr_Start, modul Start):
arrea = Strana_2.getcellrangebyname("o1")
numberformatstring = "# ##0,0000"
numform(numberformatstring,numberformatid)
arrea.NumberFormat = numberformatid
procedura (knihovna Libr_Helps, modul D_Num_form_1, 0,45 kB):
function numform(numberformatstring,numberformatid)
Fondy = thisComponent
Dim numberformatid As long
Dim NumberFormats As Object
Dim LocalSettings As New com.sun.star.lang.Locale
NumberFormats = Fondy.getNumberFormats()
numberformatid = Fondy.NumberFormats.queryKey(NumberFormatString,LocalSettings,true)
If numberformatid = -1 Then
numberformatid = NumberFormats.addNew(numberformatstring,LocalSettings)
End If
End function
stejně tak havaruje při prvním spuštění procedura "line_manager" (ale jen někdy!)
volání(z procedury Main, knihovna Libr_Start, modul Start, 10,3 kB):
line_manager
procedura (knihovna Libre_Helps, modul A_Line_man, 0,9kB):
sub line_manager
Fondy = thisComponent
Strana_2 = fondy.sheets(2)
buy_first_insert = Strana_2.getcellrangebyname("e1")
buy_last_insert = Strana_2.getcellrangebyname("f1")
acc_last_insert = Strana_2.getcellrangebyname("b1")
fund_first_insert= Strana_2.getcellrangebyname("c1")
fund_last_insert = Strana_2.getcellrangebyname("d1")
acc_num_total = Strana_2.getcellrangebyname("b2")
fund_num_total = Strana_2.getcellrangebyname("b3")
buy_num_total = Strana_2.getcellrangebyname("b5")
if acc_num_total.value = 0 then
acc_last_insert.value = 7
else
acc_last_insert.value = 6+acc_num_total.value
endif
fund_first_insert.value = acc_last_insert.value+7
fund_last_insert.value = fund_first_insert.value+fund_num_total.value*4
buy_first_insert.value = fund_last_insert.value + 11
buy_last_insert.value = buy_first_insert.value + buy_num_total.value * 4
end sub
jesli někoho napadá, co by mohlo být špatně, prosím o radu. Děkuji