Pagina 1 din 1
inregistrare date din userform
Scris: Mar Iun 11, 2019 3:59 pm
de maryurs24
Salut
Am fisierul atasat,in care am creat un userform.Cum fac ca dupa bifarea celor 3 coloane din aceasta forma , in primul rand gol din coloanele E,F si G sa se inregistreze ceea ce este bifat?
Adica eu tot timpul sa am pe ecran acea forma.Bifez cate o optiune(doar cate 1) din fiecare coloana din forma si apoi apas ok.Atunci datele din forma sa se scrie in fisier in dreptul coloanelor E,F si G, iar in coloana H sa se scrie data si ora la care am apasat ok.Daca apas AM GRESIT, sa dispara ce este bifat, iar datele sa nu se inregistreze.
Re: inregistrare date din userform
Scris: Mar Iun 11, 2019 5:12 pm
de Dr.Windows
Salut!
In primul rand 2 observatii:
1. Daca trebuie sa fie o singura valoare pe coloana nu ar fi trebuit sa folosesti "CheckBox" ci "OptionButton". Am lasat exemplul totusi asa cum a fost conceput.
2. Ca sa poti controla fiecare coloana, obiectele de pe coloana respectiva trebuiesc incluse intr-un "Frame"
Pentru salvarea datelor, trebuie scris cod in evenimentul Click al butonului Ok. Doar trebuie gasit ultimul rand disponibil, si apoi scris ce trebuie pe fiecare coloana:
Cod: Selectaţi tot
Private Sub CommandButton1_Click()
Dim r As Double, sh As Sheet1
Dim elDefect As Control, elBara As Control, elCuloare As Control
'stabileste foaia in care se lucreaza
Set sh = Sheets("Sheet1")
'detecteaza primul rand liber pe coloana de referinta (E)
r = sh.Cells(sh.Rows.Count, "E").End(xlUp).Row + 1
'scrie pe coloana H data si ora
sh.Range("H" & r).Value = Now()
'Scrie in coloana E defect
For Each elDefect In Me.fraDefect.Controls
If TypeName(elDefect) = "CheckBox" Then
If elDefect.Value = True Then
sh.Range("E" & r).Value = elDefect.Caption
Exit For
End If
End If
Next elDefect
'Scrie in coloana F tip bara
For Each elBara In Me.fraBara.Controls
If TypeName(elBara) = "CheckBox" Then
If elBara.Value = True Then
sh.Range("F" & r).Value = elBara.Caption
Exit For
End If
End If
Next elBara
'Scrie in coloana G Culoare
For Each elCuloare In Me.fraCuloare.Controls
If TypeName(elCuloare) = "CheckBox" Then
If elCuloare.Value = True Then
sh.Range("G" & r).Value = elCuloare.Caption
Exit For
End If
End If
Next elCuloare
End Sub
Pentru butonul "Am gresit" presupun ca defapt doreai o doar resetare a checkboxurilor, asa va varianta rapida este:
Cod: Selectaţi tot
Private Sub CommandButton2_Click()
Dim elem As Control
For Each elem In Me.Controls
If TypeName(elem) = "CheckBox" Then
elem.Value = False
End If
Next elem
End Sub
Mai multe detalii in fisierul atasat.
Re: inregistrare date din userform
Scris: Mar Iun 11, 2019 5:31 pm
de maryurs24
Merge perfect.Multumesc.
Re: inregistrare date din userform
Scris: Sâm Iun 15, 2019 9:27 am
de maryurs24
Salut.
Am facut modificarile din CheckBox in OptionButton.
A mers bine Ieri
Azi imi da eroare Compile Error: User-defined type not defined
Re: inregistrare date din userform
Scris: Dum Iun 16, 2019 8:41 am
de Dr.Windows
Salut!
Cand apare o eroare, e bine sa te obisnuiesti sa citesti mesajul de eroare si ce anume a fost "subliniat" pentru ca editorul VBA incearca sa te ajute:
Eroare.jpg
In cazul de fata doar trebuie corectata linia respectiva cu:
Re: inregistrare date din userform
Scris: Dum Iun 16, 2019 12:20 pm
de maryurs24
dar ce s-a intamplat?
O zi a mers bine, iar a 2-a zi aparea asta.
Re: inregistrare date din userform
Scris: Mar Iun 18, 2019 10:32 am
de Dr.Windows
Cineva a modificat codul... chiar si din gresala, pentru ca in momentul in care se apasa "Debug" iar partea cu eroarea era selectata, un simplu spatiu poate sa stearga bucata respectiva... si de aici "dezastrul"...
