vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest wtorek, 10 czerwca 2025 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

eval()


otwartyotwarty rozpoczął: enyahd postów: 8



napisał: admin
postów: 613


umieszczony:
15 stycznia 2006
14:02

  
Cytat:
Zdaje się, że w VBA w Excelu jest funkcja Evaluate() - to coś chyba jak eval() w innych językach


Nie o to chodziło:|
napisał: kite81
postów: 7


umieszczony:
15 stycznia 2006
12:27

  
Zdaje się, że w VBA w Excelu jest funkcja Evaluate() - to coś chyba jak eval() w innych językach
napisał: enyahd
postów: 4


umieszczony:
14 stycznia 2006
00:52

  
very nice:)
dziekuje bardzo, o to wlasnie mi chodzilo
pozdrawiam
napisał: jottad
postów: 118


umieszczony:
13 stycznia 2006
19:43

  
Cytat:
ok, przepraszam :)
TextBoxy w formularzu; bedzie ich co najmniej kilkanascie, kazdy z nich obslugiwany jest przez zdarzenia Change oraz KeyPress, ktore wywoluja jedna funkcje... no i wlasnie o to chodzi: coby wszystko to ujac w jednej funkcji, bo w kazdym z TextBoxow nalezy jedynie ograniczyc mozliwosc wpisywania okreslonych znakow, nie bede musial umieszczac kilkanascie razy tego samego kodu przy kazdym zdarzeniu..


Masz wiele mozliwości. Pierwsza, to skorzystanie z kolekcji Controls obiektu UserForm. Przykładowo:

zmienna=1
set txtbox = UserForm1.Controls("TextBox" & zmienna)
'lub, gdy kod znajduje się w module formularza:
set txtbox = Me.Controls("TextBox" & zmienna)



Innym sposobem jest umieszczenie obiektów w ramce (Frame) i wyszukiwanie aktywnego formantu ramki, bez odwoływania się do jego nazwy:

set textbox=Frame1.ActiveControl



Lecz chyba najprostszym rozwiązaniem będzie uzycie formantu, jako argumentu Twojej ogólnej procedury. Czyli przykładowo,definicja procedury może wyglądać tak:

Sub MojaProcedura(txtBox As Object)
'lub
Sub MojaProcedura(txtBox As TextBox)



i możesz przekazać obiekt z wnętrza jego procedury obsługi zdarzeń, np:
Private Sub TextBox1_Change()
  MojaProcedura TextBox1
End Sub

napisał: admin
postów: 613


umieszczony:
13 stycznia 2006
18:46

  
No i teraz wiem o co chodzi.
W przypadku VB można wykorzystać do tego tzw. tablicę kontrolek (Control Array).

Niestety nie da się to zrobić w VBA (tak myślę). Ale można sprawę nieco uprościć:
W procedurach zdarzeniowyh umieszczasz tylko odwołanie do innej, zewnętrznej procedurę w której dokonujesz potrzebnych operacji.
Tym sposobem kod pojawi się tylko raz.
Jeśli chcesz zmieniać stan kontrolek, w argumencie procedury umieść nazwę kontrolki.
Mama nadzieję, że pomogłem.
:D
napisał: enyahd
postów: 4


umieszczony:
13 stycznia 2006
17:41

  
ok, przepraszam :)
TextBoxy w formularzu; bedzie ich co najmniej kilkanascie, kazdy z nich obslugiwany jest przez zdarzenia Change oraz KeyPress, ktore wywoluja jedna funkcje... no i wlasnie o to chodzi: coby wszystko to ujac w jednej funkcji, bo w kazdym z TextBoxow nalezy jedynie ograniczyc mozliwosc wpisywania okreslonych znakow, nie bede musial umieszczac kilkanascie razy tego samego kodu przy kazdym zdarzeniu..
zdarzenia Change i KeyPress przekazuja zmienna identyfikujaca o ktory TextBox chodzi:
zamiast - UserForm1.TextBox1.[...]
chciabym - UserForm1.TextBox<zmienna>.[...]
wiadomo, nie moge zamiast nazwy obiektu TextBoxa po prostu wpisac zmiennej, a czuje sie troche zaskoczony brakiem funkcji w VBA "zamieniajacej" dowolny ciag lub zmienna na nazwe w hierarchii obiektow...

dzieki za pomoc i sry za brak polskich znakow :)
napisał: admin
postów: 613


umieszczony:
12 stycznia 2006
22:04

  
Napisz moze coś więcej...
Nie wiem jak Ci pomóc:(
napisał: enyahd
postów: 4


umieszczony:
12 stycznia 2006
18:00

  
jak mozna zastapic funkcje eval() znana z innych jezykow?
musze zamienic zmienna przekazana do funkcji na nazwe obiektu..
dziekuje


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z