Problém s makrami vo VBA   otázka

VB.NET, VB6/VBA

Mám spravený kalkulák s použitím makier VBA v exceli 2003, funguje OK, keď tento súbor spustím na inom počítači s excelom 2003 alebo aj iným, niekde to funguje bez problémov, niekde hlási chybu v skrytom module ( makrá sú samozrejme povolené ) po kontrole kódu na mašinách, kde to nejde sa program zastavil na príkaze Date, pokúšal som sa to obíjsť iným príkazom, ale stále hlási chybu. Nerozumiem tomu. Dá sa prekonvertovať tento kód do Visual Basicu 2008, kde môžem skompilovať kód do exe súboru, ktorý by môj problém vyriešil ?

Za radu vopred ďakujem.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano, dá.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem, aspoň mám istotu, že sa to dá, budem pátrať ako.

P.S Ak by ste to náhodou vedeli, budem rád, keď mi ušetríte námahu a čas.

Ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak přesně vypadá ten řádek kódu s DATE, kde se to zastaví? Něco podobného už jsem někde řešil, snad si vzpomenu....

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Private Sub Workbook_Open()

ActiveSheet.Unprotect ("xxx")

bd = Range("AB1000")

If bd = 0 Then

dato = CDbl(Date)

Range("AA1000") = CDbl(Date)

Range("AB1000") = 1

Else

dato = Range("AA1000")

End If

dat = Range("AC1000")

ActiveSheet.Protect ("xxx")

Load UserForm1

UserForm1.StartUpPosition = 3

UserForm1.Show

Private Sub UserForm_Initialize()

Label20.Font.Size = 8

Label20.Left = 208

Label20.Top = 330

Label20.Height = 40

Label20.Width = 210

Label20.Caption = "Software SATRANS, spol. s r.o. Sabinov © 2010" _

& " e-mail : [email protected], verzia 1.03S "

Label21.Font.Size = 12

Label21.Left = 18

Label21.Top = 296

Label21.Height = 60

Label21.Width = 200

Label21.Caption = "Dodávateľ : " _

& " DEXTRADE Žilina, s.r.o, tel. +421 41 7055 202, Kamenná 9,010 01 Žilina"

Label22.Font.Size = 14

Label22.Left = 430

Label22.Top = 320

Label22.Height = 120

Label22.Width = 240

Label22.Caption = "Objednávky : [email protected]"

Label23.Font.Size = 22

Label23.Caption = "Kalkulátor AL rámikov "

dat = ThisWorkbook.ActiveSheet.Range("Ac1000")

If CDbl(Date) > dat Then

MsgBox ("Skončila platnosť licencie, kontaktujte dodávateľa softvéru, alebo tvorcu softvéru: [email protected] !")

Label47.Caption = "Licencia neplatná !"

GoTo 99

End If

Label47.Caption = CStr(CDate(dat))

atď.

Snažil som sa to obíjsť cez príkaz now() a potom tak, žš som súbor uložil a cez

CDbl(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time"))

sa dopátrať k dátumu - nepomohlo.

Chyba sa tvárila akoby systém nepoznal niektoré príkazy VBA - logiku som nenašiel, lebo keby sa to týkalo starších verzií excelu, tak by snáď išlo o konflikt verzií, ale robilo to aj pod OFICE 2003, a v tejto rade office bol aj program urobený, takže neviem...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

U mě CDbl(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")) funguje

Také následný mírně upravený kód funguje.

Sub test()

On Error Resume Next
ActiveSheet.Unprotect "xxx"
On Error GoTo 0

bd = Range("AB1000")

If bd = 0 Then
 dato = CDbl(Date)
 Range("AA1000") = CDbl(Date)
 Range("AB1000") = 1
Else
 dato = Range("AA1000")
End If
dat = Range("AC1000")
ActiveSheet.Protect ("xxx")

dat = ThisWorkbook.ActiveSheet.Range("Ac1000")
If CDbl(Date) > dat Then MsgBox ("Skončila platnosť licencie, kontaktujte dodávateľa softvéru, alebo tvorcu softvéru: [email protected] !")


End Sub

Trochu nechápu proč údaje o poslední modifikaci ukládáte do buňky a pak jí zase načtete ?

Jedině, že si tak chcete ohlídat změnu systémového datumu, resp. porovnání posledního uloženého datumu zda není větší než současný.

Zkuste použít deklaraci jednotlivých proměnných. Je to nejen méně náročné na paměť, ale také rychlejší a přehlednější .

Na začátku modulu nebo třídy vždy napiště Option Explicit (dá se to nastavit), které Vám budou hlídat zda jste všehny proměnné korektně deklaroval. Je taky možné, že některá konverze neprojde, kód se Vám tam zastaví a Vy zjistíte kde je chyba.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za príspevok, máte pravdu, môj kód je trochu surový, je tam niekoľko pasáží, ktoré sú zbytočné, napriek tomu problém je iný, kód funguje bez problémov na niektorých počítačoch aj v iných verziách excelu a naopak na niektorých počítačoch dokonca aj s rovnakou verziou excelu samozrejme s povolenými makrami nefunguje a hlási chybu " Error in hiden module". Keď krokujem kód program sa zastaví na riadku, ktorý má niečo dočinenia s dátumom a systém sa tvári, že príkaz date, alebo now nepozná. To mi je divné, lebo ak by bola chyba v programe, tak tú istú chybu hlási vždy, a jedno na ktorom počítači.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ospravedlňujem sa, zabudol som sa prihlásiť.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback