vineri, 12 octombrie 2018













Voi explica in acest tutorial cum poti realiza o interfata ca cea din imagine, desigur tu o poti personaliza asa cum iti doresti imediat ce vei intelege mecanismul.
 In primul rand trebuie sa iti activezi utilitarul de dezvoltator in VBA, setare pe care o poti invata in postarea asta. Fata de articolul anterior in care introducem un nou modul, aici vom introduce in primul rand un nou "Userform".
Pasul urmator reprezinta aplicarea stilurilor si definirea obiectelor cu care vom lucra.
Dupa cum se poate vedea, eu am avut 8 casute de tip text, 1 caseta de selectare (dropdown) si un buton de incarcare a datelor in baza de date.

Cod:

Private Sub CommandButton1_Click()
'Functie buton pentru nr inregistrare
'Declaram variabile
Dim lrCD As Long, lrPD As Long, lrS As Long
Dim rasp
Dim intLastRow
Dim d
intLastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 'ultima casuta ocupata, o vom folosi pentru inserarea de date (astfel incat sa nu se suprapuna informatiile)
TextBox2.Text = Date
On Error GoTo ErrHand
'Toate datele intra in sheet Sheet1
If Sheets("Sheet1").Range("A:A").Find(CLng(TextBox20.Value), LookIn:=xlValues) Then
MsgBox ("Cerea este deja inregistrata!") 'Sa avem nr unic de inregistrare a campului cu nr de cerere
Else
dd:
Cells(intLastRow + 1, 9) = "Cerere inregistrata" 'Obligam utilizatorul sa nu lase campuri necompletate
If TextBox28.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox15.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox16.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox17.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox18.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox19.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If TextBox21.Text = "" Then
MsgBox ("Campul este obligatoriu")
End If
If ComboBox1.ListIndex = -1 Then
MsgBox ("Selectia este obligatorie")
End If
lrCD = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Cells(lrCD + 1, "A").Value = TextBox20.Text 'In sheet1 se introduce valoarea din casuta de tip text din userform.
Sheets("Sheet1").Cells(lrCD + 1, "B").Value = TextBox28.Text
Sheets("Sheet1").Cells(lrCD + 1, "C").Value = TextBox15.Text
Sheets("Sheet1").Cells(lrCD + 1, "D").Value = TextBox16.Text
Sheets("Sheet1").Cells(lrCD + 1, "E").Value = TextBox17.Text
Sheets("Sheet1").Cells(lrCD + 1, "F").Value = TextBox18.Text
Sheets("Sheet1").Cells(lrCD + 1, "G").Value = TextBox19.Text
Sheets("Sheet1").Cells(lrCD + 1, "H").Value = TextBox21.Text
Sheets("Sheet1").Cells(lrCD + 1, "J").Value = TextBox2.Text
Sheets("Sheet1").Cells(lrCD + 1, "K").Value = ComboBox1.Text
'Golire campuri pentru fiecare tip de control, fie el casuta de tip text, selectie, checkbox, etc. Nu dorim ca dupa inserarea datelor, sa ne ramana datele in campuri.
 For Each ctl In Me.Controls
        Select Case TypeName(ctl)
            Case "TextBox"
                ctl.Text = ""
            Case "CheckBox", "OptionButton", "ToggleButton"
                ctl.Value = False
            Case "ComboBox", "ListBox"
                ctl.ListIndex = -1
        End Select
    Next ctl
End If
Exit Sub
ErrHand:
ErrorHandler:
Select Case Err.Number
        'Common error #1: locatie sau nume de fisier gresita.
        Case 1004
            Range("D10:E11").ClearContents
            Application.ScreenUpdating = True
            MsgBox ("Fisierul nu a putut fi gasit in directorul mentionat")
        Exit Sub
        'Common error #2: Textul mentionat nu este prezent in locul respectiv
        Case 9, 91
            GoTo dd
        Exit Sub
End Select
End Sub


Private Sub UserForm_Initialize()

' Adaugam valori la combobox de tip lista .
With Me.ComboBox1
    .Clear ' stergem elementele anterioare, daca au fost setate
    .AddItem "Standard"
    .AddItem "Nestandard"
    .AddItem "Simplu"
    .AddItem "Complex"
End With
End Sub

Selectarea casutei de tip text pentru a verifica numele variabilei (textbox20 in cazul de fata)

PS: Daca nu reusiti sa configurati programul, va pot ajuta daca ma contactati in privat :-)



3 comentarii:

  1. Buna ziua,
    Ma intereseaza realizarea unei asemenea interfete in Excel, doar cu diferenta ca trebuie introdus un ComboBox de unde sa selectam o informatie (un nume client de exemplu)si astfel restul datelor introduse sa fie "trimise" in SHEET-ul clientului. Ma puteti ajuta cu realizarea unei astfel de baze de date?

    RăspundețiȘtergere
  2. Acest comentariu a fost eliminat de autor.

    RăspundețiȘtergere