vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 13 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Dostęp do obiektów formularza po przez tablice ?


otwartyotwarty rozpoczął: Mir postów: 3



napisał: Mir
postów: 11


umieszczony:
9 sierpnia 2005
14:23

  
Wybaczcie, że tak na raty, ale rozwiązałem już problem z deklarowaniem zmiennych jako element formularza:

Dim Zmienna As MSForms.TextBox

Set Zmienna = UserForm1.TextBox1

' taraz zamiast pisać:
UserForm1.TextBox1.Value = "cos tam"
' możemy tak:
Zmienna = "cos tam"

'efekt jest ten sam: w polu tekstowym pokaze se napis 'cos tam'

napisał: Mir
postów: 11


umieszczony:
9 sierpnia 2005
13:20

  
Znalazłem rozwiązanie, tyle tylko, że jest ono trochę dziwne :|?
' deklarujemy tablice
Dim Zmienna(20) As Control

' przypisujemy obiekty
Set Zmienna(0) = UserForm1.TextBox1
Set Zmienna(1) = UserForm1.ComboBox1
Set Zmienna(2) = UserForm1.ComboBox2
Set Zmienna(3) = UserForm1.ComboBox3
Set Zmienna(4) = UserForm1.CheckBox1

' teraz, aby zmienić Value w TextBox1 mozemy użyć naszej zmiennej
Zmienna(0).Value = "cos tam"

' powyższa linijka będzie miała taki sma efekt jak:
UserForm1.TextBox1.Value = "cos tam"


... no i fajne to działa tyle, że czegoś tu nie kumam :P
Dim Zmienna as ComboBox
Set Zmienna = UserForm1.ComboBox1


To działa znakomicie, wszystko tak ja trzeba !

Natomiast
Dim Zmienna as TextBox
Set Zmienna = UserForm1.TextBox1


...już wywala błąd !?
No i o co tu chodzi ? Czemu to nie działa ? W czym problem ?

Po drugie kiedy deklarujemy zmienna jako Control, to przy odwoływaniu się do tej zmiennej (zmienna.) na rozwijanej liście własności nie ma czegoś takiego jak Value - trzeba ją na siłe wpisać!

Podsumowując, po wielu dniach przeszukiwania netu, prób i błędów mam to, o co mi chodziło :)
Mam nadzieje, że rozwiązania kiedyś komuś się przydadzą.
napisał: Mir
postów: 11


umieszczony:
1 sierpnia 2005
20:25

  
Mam formularz, gdzie jest duzo obiektów.
Tworzą one grupy (ComboBox1, ComboBox2,... ComboBox20), itd. z textbox, checkbox...

Na każdej grupie obiektów robie te same operacje, wiec klepie po kilkadziesiąt razy ten sam kod dla każdego obiektu z osobna

Udoło mi się wykombinować coś takiego:
Sub Przypisz_Jakas_Wartosc_Do_Grupy_Obiektow(NazwaGrupy As String, Wartosc As String)
    For Each Element In UserForm1.Controls
        If Left(Element.Name, Len(NazwaGrupy)) = NazwaGrupy Then
            Element.value = Wartosc
        End If
    Next Element
End Sub


NazwaGrupy to po prostu początek nazw obiektów, które są identyczne.
W ten sposób wywolujac powyższą funkcję mogę szybko wykonywać różne działania na jakiejś grupie obiektów.

Jednak tego sposobu nie da się wykorzystać jeśli jedna grupa obiektów ma wpływ na inną grupę (np. od wartości w TextBox6 zależy wartość w ComboBox6).


Kombinowałem jeszcze z czymś takim:
Dim Tablica() As Object
Set Tablica(0) = UserForm1.TextBox1.Value
Set Tablica(1) = UserForm1.TextBox2.Value


...ale nic nie wykombinowałem :(

Help ! Bo mnie trafia, jak muszę pisać n-razy kawałki tego samego kodu.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z