În acest articol vom crea un formular de introducere a datelor, date ce vor fi apoi inserate într-un tabel din foaia de calcul.

Cum procedăm ?
– accesăm editorul VBA;
– din meniul Insert, vom insera un nou modul: modMain;
– din meniul Insert, vom insera un userform nou: frmMain;

Codul din spatele modulului este:

Sub Main()
    frmMain.Show
End Sub

Acest cod va fi atribuit unui buton şi va lansa formularul de introducere a datelor.

Formularul va conţine:

  • 4 controale de tip Label ce vor afişa numele celor 4 câmpuri de interes;
  • 4 controale de tip Text Box;
    • txtNume;
    • txtOras
    • txtAdresa;
    • txtTel.
  • două butoane:
    • cmdAdd;
    • cmdCancel.

Pentru butonul cmdCancel, codul este:

Private Sub cmdCancel_Click()
    'inchidem formularul
    Unload Me
End Sub
Pentru butonul cmdAdd, codul este:
Private Sub cmdAdd_Click()
On Error GoTo err
    'obligam utilizatorul sa completeze toate campurile
    If txtNume.Text = "" Or txtOras.Text = "" Or txtAdresa.Text = "" Or txtTel.Text = "" Then
        MsgBox "Completeaza toate campurile !", vbOKOnly + vbInformation, "Info"
    Else
        'identificam urmatorul rand liber
        Row = ThisWorkbook.Worksheets("Info").UsedRange.Row + ThisWorkbook.Worksheets("Info").UsedRange.Rows.Count
        'scriem valorile specificate in formular
        With ThisWorkbook.Worksheets("Info")
            .Cells(Row, 2) = Me.txtNume.Value
            .Cells(Row, 3) = Me.txtOras.Value
            .Cells(Row, 4) = Me.txtAdresa.Value
            .Cells(Row, 5) = Me.txtTel.Value
        End With
    End If
Exit Sub
err:
    MsgBox err.Description, vbOKOnly + vbInformation, "Eroare"
End Sub

Folosind operatorii IF şi OR vom obliga utilizatorul să completeze toate câmpurile, înainte de a salva înregistrările.
Mai departe, codul va identifica ultima linie liberă din domeniul specificat şi în momentul salvării, datele din formular vor fi scrise în tabel.

Codul de mai sus identifică tabelul situat în domeniul de celule B2:E2 şi în funcţie de înregistrările adăugate, acesta se va extinde în jos.
Dacă doriţi ca tabelul să înceapă din altă zonă, modificaţi codul aici:

            .Cells(Row, 2) = Me.txtNume.Value
            .Cells(Row, 3) = Me.txtOras.Value
            .Cells(Row, 4) = Me.txtAdresa.Value
            .Cells(Row, 5) = Me.txtTel.Value

Sintaxa este: Cells(linie, coloană) şi drept urmare, modificaţi doar numărul coloanei, astfel încât să corespundă cu zona în care aveţi tabelul.

Resurse de lucru | If… Or… Then… Else.xlsm

Back To Top
Search