petek, 15. april 2011

Obrazec za vnos

Excel je zelo uporaben ko se soočimo z vnosom podatkov. Uporabimo lahko vgrajen obrazec, lahko pa si seveda izdelamo svojega. Vse skupaj je zelo preprosto in velikokrat nam precej olajša delo.

Kot vedno zaženemo VBA (Alt+F11) in vstavimo obrazec (Insert -> UserForm). Najprej se nam prikaže samo ozadje obrazca, ki ga oblikujemo po želji; vstavimo Tekstovna polja (textbox), gumbe (button), Imena (label),...

V naslednjem primeru je prikazana izdelava obrazca za vnos podatkov o prometni signalizaciji v določenem naselju.

Sama oblika obrazca je dokaj preprosta in pregledna, ker se mi ni dalo preveč ukvarjati z lepotičenjem.


Ko zaključimo z oblikovanjem obrazca, pa je potrebno dodati tudi nekaj programske kode, ki poskrbi, da postane obrazec uporaben. V oknu Project Explorer (na zgornji sliki je to levo zgornje okno) poiščemo naš obrazec (UserForm1), kliknemo nanj z desno tipko in izberemo View Code.

Vpišemo kodo, ki naj se izvede:

Private Sub Initialize()
'ob zagonu pobrišemo vsa polja v obrazcu.
    txtOdsek.Value = ""
    txtOznaka.Value = ""
    txtNaziv.Value = ""
    txtStacionaza = ""
    txtVisina = ""
    txtOpomba = ""
End Sub

Private Sub cmdIzhod_Click()
'gumb za izhod zapre obrazec
    Unload Me
End Sub

Private Sub cmdVnos_Click()
'ko kliknemo na gumb vnos, naj se vsebina obrazca vnese v prvo prazno vrstico
'na  delovnem listu "podatki"
          
    ActiveWorkbook.Sheets("podatki").Activate

    Range("A1").Select

    Do

    If IsEmpty(ActiveCell) = False Then

        ActiveCell.Offset(1, 0).Select

    End If

    Loop Until IsEmpty(ActiveCell) = True

    ActiveCell.Value = txtOdsek.Value

    ActiveCell.Offset(0, 1) = txtOznaka.Value

    ActiveCell.Offset(0, 2) = txtNaziv.Value

    ActiveCell.Offset(0, 3) = txtStacionaza.Value
  
    ActiveCell.Offset(0, 4) = txtVisina.Value
  
    ActiveCell.Offset(0, 5) = txtOpomba.Value

  
    'Range("A1").Select
    ActiveCell.Offset(1, 0).Select
End Sub

In zaženemo s tipko F5 ali pa kliknemo na  Run -> Run Sub/User Form.