Felugró párbeszéd ablakban viszonylag könnyen ki tudunk íratni bármilyen adatot az Excel táblázatunkban makróval a MsgBox funkció segítségével. Viszont mi történik, ha mi pont, hogy bejuttatni akarunk adatot egy felugró ablak segítségével? Az egyszerű megoldás az InputBox funkció lesz, az összetettebb pedig ha saját űrlapot, azaz Userform-ot hozunk létre. Ismét egy hiánypótló cikk olvasói kérés alapján.
1. InputBox – ha egy adatot akarunk bevinni
Kezdjük egyből a legegyszerűbb példával: azt akarjuk, hogy a makrónk lefutásakor felugorjon egy párbeszéd ablak, amibe be tudunk írni egy tetszőleges szöveget, és ha leokézzuk az ablakot, akkor az a szöveg megjelenik az A1 cellában.
Íme az egysoros kódunk:
Sub makro()
Range("A1") = inputbox("Írd ide, amit A1 cellában szeretnél látni")
End Sub
Amikor lefut a fenti makró, felugrik egy ablak, aminek a szövege ez lesz: „Írd ide, amit A1 cellában szeretnél látni”. Az InputBox funkciónak ez az egyetlen kötelezően kitöltendő paramétere. Tehát meg kell adnunk, hogy mégis mit várunk attól, akinek felugrik ez az ablak és szöveget kell beírnia.
Ha ezután beírunk az üres mezőbe valamit, majd rányomunk az OK-ra, akkor az A1 cellánkban meg fog jelenni a szövegünk.
De hogyan is épül fel a InputBox funkció, hogyan tudjuk picit formázani, jobban személyreszabni?
Az InputBox szintaxisa VBA-ban
InputBox (Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)
Paraméter neve | Kötelező / Opcionális | Adat típus | Leírás |
Prompt | Kötelező | Szöveg | A párbeszédpanelen megjelenítendő üzenet. Ez lehet karakterlánc, szám, dátum vagy logikai érték (a Microsoft Excel automatikusan karakterláncra kényszeríti az értéket, mielőtt megjelenik). A maximális hossz 255 karakter, ellenkező esetben nincs prompt, és az alkalmazás metódusa azonnal a 2015-ös hibát adja vissza. |
Title | Opcionális | Variáns | A beviteli mező címe. Ha ez az argumentum kimarad, az alapértelmezett cím az Input. |
Default | Opcionális | Variáns | Megad egy értéket, amely megjelenik a szövegmezőben, amikor a párbeszédpanel először megjelenik. Ha ez az argumentum kimarad, a szövegmező üresen marad. Ez az érték lehet Range objektum. |
Left | Opcionális | Variáns | Megadja a párbeszédpanel x pozícióját a képernyő bal felső sarkához képest, pontokban. |
Top | Opcionális | Variáns | Megadja a párbeszédpanel y pozícióját a képernyő bal felső sarkához képest, pontokban. |
HelpFile | Opcionális | Variáns | A beviteli mezőhöz tartozó súgófájl neve. Ha a HelpFile és a HelpContextID argumentumok jelen vannak, egy Súgó gomb jelenik meg a párbeszédpanelen. |
HelpContextID | Opcionális | Variáns | A HelpFile súgótémakörének környezeti azonosítója. |
Type | Opcionális | Variáns | Megadja a visszatérési adattípust. Ha ez az argumentum kimarad, a párbeszédpanel szöveget ad vissza. |
Példa
Gyakrolás kedvéért tegyük fel, hogy szeretnénk egy inputBox-ot, amibe ha beírnak egy számot, akkor A1 cella a dupláját adja vissza.
Íme a megoldás:
Sub duplazo() Dim number As Integer number = InputBox("Írj be egy számot és megkapod a dupláját", "Szám duplázó", "Ide írd be a számot") Range("A1") = number * 2 End Sub
2. Userform
A UserForm egy igen erős eszköz az Excelben egyéni felhasználói felületek készítéséhez. Lehetővé teszik, hogy egyéni párbeszédablakokat hozz létre, amelyeket a felhasználó adatainak gyűjtésére, információk megjelenítésére, vagy még a munkafüzet egyéb aspektusainak irányítására is használhatsz. A UserFormokat a VBA programozási nyelvvel, azaz az Excel makrókkal tudsz létrehozni.
Egy egyszerű UserForm létrehozásához a VBA szerkesztőben (ALT + F11) menj a Beillesztés menübe, és válaszd a „UserForm” opciót. Ez megnyitja az új UserFormot a szerkesztőben, amelyet testre tudsz szabni.
A UserFormok egyik legerősebb jellemzője, hogy VBA makrókat használhatnak az űrlap irányítására. Például létrehozhatsz egy makrót, amely akkor fut le, amikor a felhasználó megnyomja a formán található gombot, vagy amikor egy elemet választ ki a listából.
Egy egyszerű példa egy VBA makróra, amelyet egy UserFormban használhatsz: input mezőbe kér egy nevet és azt egy messagebox-ban jeleníti meg:
- Nyisd meg a VBA szerkesztőt az ALT + F11 billentyűkombinációval.
- A VBA szerkesztőben menjen a Beillesztés menübe, és válaszd a „UserForm” opciót.
- Egy új UserForm jelenik meg a szerkesztőben. Menj a Toolbox (Ctrl + T) menübe, és adja hozzá a UserFormhoz a címkét, a szövegmezőt és a parancsgombot.
- Módosítsd a címke szövegét, hogy „Kérjük, adja meg a nevét:”, és állítsd be a szövegmező nevét „txtName”. Ezt ha rákattintasz jobb egérrel, majd a tulajdonságokra mész, akkor a Name mezőben tudod átírni.
- Módosítsd a parancsgomb feliratát „OK”-ra, és állítsd be a gomb nevét „cmdOK”-ra, úgy ahogy az előbb az input mezőnél csináltad.
- Kattints duplán a parancsgombra a kódszerkesztő megnyitásához, és add hozzá a következő kódot:
Private Sub cmdOK_Click() Dim userName As String userName = txtName.Value MsgBox "Hello, " & userName & "!" End Sub
- Menj a Fájl menübe és válassza a „Mentés” opciót a UserForm mentéséhez.
- A UserForm teszteléséhez menj vissza az Excel munkafüzethez és nyomd meg az ALT + F8 billentyűkombinációt a Makró párbeszédpanel megnyitásához, válaszd ki a UserFormot és nyomd meg a „Futtatás” gombot.
Amikor a UserForm megjelenik, a felhasználótól kérjük, hogy írja be a nevét a szövegmezőbe. Amikor rákattint a „OK” gombra, a VBA makró lefut, és az adatot a „userName” változóban tárolja. A makró egy üzenetdobozt jelenít meg a „Hello, ” szöveggel, amit a felhasználó neve követi.
Gratulálok ezzel kész az első Excel UserForm-od!