Adatok bevitele űrlap segítségével
- 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]
