Cum se face Refreash unui UserForm ?

Închis
Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Cum se face Refreash unui UserForm ?

Mesaj de raresmc » Dum Sep 13, 2009 4:13 pm

Buna ziua tuturor.Am doua formulare UserForm1 si UserForm2.Am de completat in UserForm1 datele facturii pentru un anumit client pe care al selectez dintr-un ComboBox.Daca nu se afla clientul in acel CoboBox apas un buton care imi deschide un alt formular UserForm2 in care pot introduce datele noului client.OK toate bune pana aici.Problema este ca dupa ce completez datele noului client si inchid UserForm2 revenind la UserForm1 care defapt era in spatele la UserForm2, cand caut in acel ComboBox nu imi apare ultima inregistrare facuta cu putin timp inainte.Daca inchid si UserForm1 si al redeschid imi apare si ultima inregistrare facuta.Mi-ar trebui un refesh de Userform.
Ma puteti ajuta?
Cum se face asta?
Toate cele bune
Pe curand..

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Cum se face Refreash unui UserForm ?

Mesaj de gecs » Dum Sep 13, 2009 6:10 pm

Cum populezi randurile din combobox?

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Cum se face Refreash unui UserForm ?

Mesaj de raresmc » Dum Sep 13, 2009 7:23 pm

Randurile din ComboBox le populez dintr-o foaie din excel.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Cum se face Refreash unui UserForm ?

Mesaj de gecs » Dum Sep 13, 2009 7:59 pm

Ok, dintr-o foaie, dar folosesti AddItem, sau RowSource? E mai simplu cu RowSource si folosirea unui nume in sheet-ul respectiv, name care e asociat unui range dinamic. In situatia asta, procedura de "refresh" a randurilor inseamna doar

Cod: Selectaţi tot

ComboBox.RowSource = "=nume"
unde "nume" e numele definit pentru range-ul respectiv.

In orice situatie va trebui sa repopulezi combobox-ul daca in al doilea form adaugi ceva la range-ul pe care-l folosesti pentru a popula combobox-ul.
Dupa parerea mea, la inchiderea celui de-al doilea form trebuie sa salvezi intr-o variabila globala cum sa terminat "sesiunea de lucru" cu al doilea form: cu adaugare de inregistrare, sau nu (intr-o variabila de tip boolean). In evenimentul DropButtonClick si in evenimentul Enter al ComboBox-ului testezi variabila respectiva si reiei procedura de populare a randurilor, daca e cazul.

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Cum se face Refreash unui UserForm ?

Mesaj de raresmc » Dum Sep 13, 2009 8:11 pm

Multumesc frumos de ajutor,dar am gasit totusi o solutie poate mai simpla.Adica am facut un buton "Actualizare" care daca al apesi reincarca ComboBox-ul.
Multumesc frumos pentru sfaturi.
Pe curand.
Toate cele bune va doresc.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Cum se face Refreash unui UserForm ?

Mesaj de gecs » Dum Sep 13, 2009 8:23 pm

Mai simpla findca ai un buton in plus (in al carui click ce se intampla?) :shock: Ok, daca zici tu... dar eu as pune si un Label cu un text in care sa explic la ce foloseste butonul ala, ca poate uita user-ul sa apese pe "Actualizare". ;)

Dupa parerea mea, cand poti sa controlezi fluxul de executie al programului in totalitate cu ce controale ai, nu ai niciun motiv sa adaugi controale suplimentare.

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Cum se face Refreash unui UserForm ?

Mesaj de raresmc » Dum Sep 13, 2009 10:14 pm

Sunt deacord cu tine, dar nu stiu cum se face.Ma poti ajuta cu un exemplu?
Multumesc anticipat.
Toate cele bune.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Cum se face Refreash unui UserForm ?

Mesaj de gecs » Dum Sep 13, 2009 11:02 pm

In fisierul atasat (eu am lucrat in 2007, dar am salvat si ca xls), rulezi singurul macrou care exista. Macroul afiseaza un form care are un combobox si un buton - butonul e pentru afisarea celui de-al doilea form. Al doilea form are doua butoane: Adaugat si Anulat - click pe Adaugat inseamna ca s-au adaugat inregistrari in range-ul care populeaza combobox-ul din form 1 - click pe Anulat sau inchis fereastra de la Close button inseamna ca nu s-au adaugat inregistrari in range (procedura de adaugare efectiva de inregistrari in range nu exista in exempu, dar o sa explic cum poti sa testezi si asta). Oricare dintre cele doua butoane ascunde form2 iar la revenirea in form1, daca dai un click pe combobox vei primi mesajul adecvat ("Inregistrari adaugate", sau "Nu s-au adaugat inregistrari") actiunii din form2. In codurile atasate controalelor si in modulul vba o sa vezi ca exista o singura variabila de tip boolean care tine evidenta actiunii din form2 si care in evenimentul DropButtonClick e testata si in functie de valoarea ei se face actualizarea datelor din combobox.

Acum in evenimentul DropButtonClick al combobox-ului sterge (sau transforma in comentariu) tot in afara de linia:

Cod: Selectaţi tot

ComboBox1.RowSource = "=litere"
Fa userform1 modeless (de la properties ShowModal False in loc de True). Poti sa nu mai lansezi macroul "exemplu", ci direct userform1 cu run. Dupa ce a aparut fereastra, da un click in Sheet1 si adauga/sterge pe/de pe coloana A. Revino in userform si vezi ce se intampla in combobox.

Cu Ctrl+F3 poti sa vezi definitia numelui "litere" folosit la popularea randurilor din combobox.
Populare ComboBox.xlsm
Populare ComboBox.xls
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Cum se face Refreash unui UserForm ?

Mesaj de raresmc » Dum Sep 13, 2009 11:30 pm

Multumesc de ajutorul dat,functioneaza perfect. Off cam coplicata treaba asta cu programarea.
Toate cele bune.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Cum se face Refreash unui UserForm ?

Mesaj de gecs » Lun Sep 14, 2009 8:49 am

Dupa ce intelegi ce e cu evenimentele, in ce ordine apar, cum e cu vizibilitatea variabilelor si procedurilor, nu mai pare atat de complicat. Partea de codificare devine in timp chiar o munca de rutina - mai dificil, dar si mai interesant e sa controlezi si sa vii intodeauna in intampinarea nevoilor celor care utilizeaza programul. Orice control suplimentar va aduce dupa sine cod de verificare a starii controlului respectiv in relatie cu celelalte controale si posibilele "combinatii" ce pot aparea in utilizarea programului, de aceea cu cat sunt mai putine controale, cu atat codul va fi mai usor de scris, de controlat, de depanat si de modificat, la nevoie.

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”