top of page

Adatok bevitele űrlap segítségével

  • Writer: Bálint Kolosi
    Bálint Kolosi
  • Oct 9, 2025
  • 4 min read

Ebben a cikkben egy egyszerű példával fogom bemutatni, hogyan lehet adatok rögzíteni egy munkalapra űrlap segítségével. Általában olyankor érdemes ezt a megoldást használni, ha segíteni akarjuk az adatfeltöltők munkáját azzal, hogy a közvetlen bevitel helyett egy űrlapon keresztül viszünk fel adatokat.



Nyissuk meg a Visual Basic Editor-t (Alt+F11), és adjunk hozzá a projekünkhöz egy userformot (űrlapot).




Érdemes lehet elnevezni az űrlapunkat, különösen, ha később többet is hozzáadunk a projekthez.


A Name tulajdonságban megadott névvel hivatkozhatunk az űrlap a kódunkban, a Caption tulajdonságban pedig az űrlap tetején megjelenő feliratot változtathatjuk.



A menüsoron kattintsunk a Toolboxra (ha nem látható, akkor a View menüpont alatt tudjuk bekapcsolni), és adjuk hozzá az űrlaphoz a szükséges elemeket (control-okat).



A szükségünk lesz Label típusú elemekre, melyekbe beírhatjuk majd az Adatok fül fejlécén szereplő mezőket; TextBoxokra a szöveges válaszokhoz; OptionButton-ökre a nem kiválasztásához; ComboBoxra (lenyíló menü) az iskolai végzettséghez és egy gombra a mentéshez.


Mindenképp adjunk beszédes nevet a control elemeknek is, hogy kódolás során könnyebb legyen dolgozni velük. Csinálhatjuk például úgy, hogy kisbetűvel rövidítjük a control típusát, majd nagybetűvel folytatjuk az elnevezést. Például: tbKeresztnev, tbVezeteknev, obNo, obFerfi, cbVegzettseg, btnMentes.


Így néz ki az űrlapunk az elemek elhelyezését követően.


Az űrlapon duplakattintva megjelenik az űrlap kódja. A felső lenyíló menük közül a balból válasszuk ki a ufAdatok-at, a jobb oldaliból pedig az Initialize eseményt. Ez a kód fog lefutni az űrlap megnyitásakor.



Adjuk hozzá a Végzettség combobox-hoz a lehetséges opciókat.


[code language=”vb”]Private Sub UserForm_Initialize()

cbVegzettseg.AddItem "Általános iskola"

cbVegzettseg.AddItem "Szakiskola és szakmunkásképzö"

cbVegzettseg.AddItem "Érettségi"

cbVegzettseg.AddItem "Föiskola"

cbVegzettseg.AddItem "Egyetem"

End Sub[/code]


A mentés gombra duplakattintva hozzáadhatunk egy eseményt (click event) a gombhoz. Ez a subroutine tartalmazza majd azt a kódot, ami betölti az űrlapon megadott értékeket az Adatok fül első üres sorába.


Írjunk egy elágazást, ami elsőként megvizsgálja, hogy ki van-e töltve minden mező (vagy legalábbis azok, amiket kötelezővé szeretnénk tenni.


Amennyiben a mezöt üresnek találjuk, figyelmeztessük a felhasználót (MsgBox), aktiváljuk a kitöltetlen mezőt (SetFocus), és lépjünk ki a subroutine-ból.


[code language=”vb”]If tbKeresztnev = "" Then

MsgBox "A keresztnév mezö kitöltése kötelezö!"

tbKeresztnev.SetFocus

Exit Sub

End If[/code]


Ugyanezt ismételjük meg más mezőkkel.


[code language=”vb”]If tbKeresztnev = ""

ThenMsgBox "A keresztnév mezö kitöltése kötelezö!"

tbKeresztnev.SetFocus

Exit Sub

End If


If cbVegzettseg = "" Then

MsgBox "Az iskolai végzettség mezö kitöltése kötelezö!"

cbVegzettseg.SetFocus

Exit Sub

End If


If obNo = False And obFerfi = False Then

MsgBox "A nem kiválasztása kötelezö!"

obNo.SetFocus

Exit Sub

End If[/code]


Tároljuk el az adatok fület egy Worksheet típusú változóba.


[code language=”vb”]Set shtAdatok = Worksheets("Adatok")[/code]


Keressük meg az Adatok fül utolsó sorát. Az ez után sorba kerülnek majd az űrlapon megadott értékek.


Ehhez az A1 cella körüli összefüggően kitöltött tartomány sorainak megszámolását használjuk.


[code language=”vb”]lastRow = shtAdatok.Range("A1").CurrentRegion.Rows.Count + 1[/code]


Töltsük ki az a sor celláit A-tól I oszlopig.


[code language=”vb”]shtAdatok.Cells(lastRow, "A") = tbVezeteknev

shtAdatok.Cells(lastRow, "B") = tbKeresztnev

shtAdatok.Cells(lastRow, "D") = tbSzuletesiIdo

shtAdatok.Cells(lastRow, "E") = tbSzuletesiHely

shtAdatok.Cells(lastRow, "F") = cbVegzettseg

shtAdatok.Cells(lastRow, "G") = tbIRSZ

shtAdatok.Cells(lastRow, "H") = tbTelepules

shtAdatok.Cells(lastRow, "I") = tbCim[/code]


Mint láthatjuk, itt egyszerűen csak hozzárendeljük az űrlap elemeinek értéket a cellák értékéhez. A nem esetén más a helyzet, itt azt vizsgáljuk, hogy a két optionbutton közül melyik igaz. Ha az obFerfi értéke True, akkor a C oszlopba a „Férfi” szöveg kerül, ellenkező esetben a „Nő”.


[code language=”vb”]If obFerfi = True Then

shtAdatok.Cells(lastRow, "C") = "Férfi"

Else

shtAdatok.Cells(lastRow, "C") = "Nö"

End If[/code]


Végezetül írjuk ki, hogy a mentés sikeres, válasszuk ki az éppen hozzáadott sor első celláját, és zárjuk be az űrlapot.


[code language=”vb”]MsgBox "Sikeres mentés."


shtAdatok.Cells(lastRow, "A").Select


Unload Me[/code]



Amit még meg kell oldalunk, hogy az űrlapunk megjelenjen. Adjunk hozzá a projekthez egy új modult, amibe az alábbi subroutine kerül:


[code language=”vb”]Sub ShowForm()



End Sub[/code]


Tegyünk egy téglalap alakú ábrát az Adatok fülre. Ha szeretnénk, hogy a gomb mindig látszódjon, akkor emeljünk az 1. sor magasságán, helyezzük el a gombot a J1 cellába, és rögzítsük az első sort (Nézet lap > Felső sor rögzítése). Jobb klikk az imént hozzáadott gombon, majd rendeljük hozzá a ShowForm subroutine-t.


Így néz ki az ufAdatok űrlap teljes kódja:


[code language=”vb”]Private Sub UserForm_Initialize()


cbVegzettseg.AddItem "Általános iskola"

cbVegzettseg.AddItem "Szakiskola és szakmunkásképzö"

cbVegzettseg.AddItem "Érettségi"

cbVegzettseg.AddItem "Föiskola"

cbVegzettseg.AddItem "Egyetem"


End Sub


Private Sub btnMentes_Click()


Dim shtAdatok As Worksheet

Dim lastRow As Long


If tbVezeteknev = "" Then

MsgBox "A vezetéknév mezö kitöltése kötelezö!"

tbVezeteknev.SetFocus

Exit Sub

End If


If tbKeresztnev = "" Then

MsgBox "A keresztnév mezö kitöltése kötelezö!"

tbKeresztnev.SetFocus

Exit Sub

End If


If cbVegzettseg = "" Then

MsgBox "Az iskolai végzettség mezö kitöltése kötelezö!"

cbVegzettseg.SetFocus

Exit Sub

End If


If obNo = False And obFerfi = False Then

MsgBox "A nem kiválasztása kötelezö!"

obNo.SetFocus

Exit Sub

End If


Set shtAdatok = Worksheets("Adatok")


lastRow = shtAdatok.Range("A1").CurrentRegion.Rows.Count + 1


shtAdatok.Cells(lastRow, "A") = tbVezeteknev

shtAdatok.Cells(lastRow, "B") = tbKeresztnev

shtAdatok.Cells(lastRow, "D") = tbSzuletesiIdo

shtAdatok.Cells(lastRow, "E") = tbSzuletesiHely

shtAdatok.Cells(lastRow, "F") = cbVegzettseg

shtAdatok.Cells(lastRow, "G") = tbIRSZ

shtAdatok.Cells(lastRow, "H") = tbTelepules

shtAdatok.Cells(lastRow, "I") = tbCim


If obFerfi = True Then

shtAdatok.Cells(lastRow, "C") = "Férfi"

Else

shtAdatok.Cells(lastRow, "C") = "Nö"

End If


MsgBox "Sikeres mentés."


shtAdatok.Cells(lastRow, "A").Select


Unload Me


End Sub[/code]

prof.png

Kérd az ingyenes konzultációt

Kolosi Bálint vagyok,

Excel automatizálás specialista. Segítek cellákba zárni a vállalkozásod repetatív teendőit, hogy az igazán fontos dolgokra fókuszálhass!

bottom of page