TextBox osztály - VBA szövegdoboz készítés. Űrlap létrehozása Excel VBA-ban

A gyermekek számára lázcsillapítót gyermekorvos írja fel. De vannak lázas vészhelyzetek, amikor a gyermeknek azonnal gyógyszert kell adni. Ezután a szülők vállalják a felelősséget és lázcsillapító szereket használnak. Mit szabad adni a csecsemőknek? Hogyan lehet csökkenteni a hőmérsékletet idősebb gyermekeknél? Milyen gyógyszerek a legbiztonságosabbak?

Nézzük a VBA TextBox osztályt, amely lehetővé teszi szövegdoboz elhelyezését egy űrlapon. A vba TextBox osztály lehetővé teszi többsoros és egysoros szövegbeviteli területek létrehozását is, bár ez utóbbi esetben kényelmesebb az MsgBox funkció használata. Görgetősávokat is hozzáadhat, és meghatározhatja a beviteli karakterek maximális hosszát. A TextBox jelszóbeviteli komponensként is használható.

Először nézzük meg a TextBox osztály és az alapesemény főbb tulajdonságait, majd írjunk egy példát.

TextBox VBA nyelvi osztály rendezvényei

érték vagy Szöveg- a TextBoxba beírt szöveg

látható– lehetővé teszi az elem elrejtését (hamis) vagy újbóli megjelenítését (igaz).

többsoros– ez a tulajdonság lehetővé teszi annak megadását, hogy a szövegmező egysoros (hamis) vagy többsoros (igaz) legyen.

sortörés– a tulajdonság akkor releváns, ha a MultiLine a true értéket tartalmazza, ebben az esetben, ha a WordWrap értéke igaz, akkor a TextBox szövegmező határának elérésekor a szöveg automatikusan új sorba kerül.

görgetősávok– lehetővé teszi annak megadását, hogy megjelenjenek-e a görgetősávok. Az ingatlan a következő értékeket veheti fel:

  • 0 – fmScrollBarsNone(a görgetősávok hiányoznak)
  • 1– fmScrollBarsHorizontal(vízszintes görgetősáv)
  • 2 – fmScrollBarsVertical(függőleges görgetősáv)
  • 3 – fmScrollBarsBoth(vízszintes és függőleges görgetés)

PasswordChar- lehetővé teszi a bemeneti adatok helyett megjelenített karakter beállítását. A tulajdonság a jelszó megadásakor releváns.

MaxLength- lehetővé teszi a szövegmezőbe beírható karakterek maximális számának megadását. Az alapértelmezett 0, ami azt jelenti, hogy nincs korlátozás.

A többi vezérlőhöz hasonlóan a TextBox osztálynak is vannak események, a TextBox fő eseménye az változás- minden alkalommal előfordul, amikor egy karaktert beírnak a szövegmezőbe. Láthatta ezt a képet: az ellenőrző kód beírásakor, amíg annak hossza el nem éri a megadottat (például 12 karakter), addig az „Ellenőrzés” gomb nem lesz elérhető. Ez itt is megtehető.


Oké, itt az ideje gyakorolni. Nem fogok újra belemenni minden részletbe, mint az előző cikkekben, ezért egyenesen leszögezem: adjunk hozzá egy új modult és egy új űrlapot a projekthez. Válassza ki a Képaláírás () vezérlőt az Eszköztár ablakból, adja hozzá az űrlaphoz, legyen felül, tegyen alá egy szövegdobozt (TextBox), és a legalul - legyen egy gomb ("Check" felirattal) ). Nos, mint korábban, a modul kódszerkesztőjében írjuk az eljárást:

Itt egy gombnyomást dolgozunk fel, a gombra kattintva a Label1 objektum Caption tulajdonságához (Inscription) hozzárendelődik a TextBox1 szövegmező tartalma (Text property).

Privát Sub TextBox1_Change() Dim LenText As Byte LenText = Len(TextBox1.Text) If LenText = 12 Akkor bCheck.Enabled = igaz Else bCheck.Enabled = False End If End Sub

Itt a Change esemény a vba TextBox osztály TextBox1 objektumának szövegmezőjéhez kerül feldolgozásra. A LenText változó tárolja a beírt szöveg hosszát, minden adatbevitelnél a hossz ellenőrzésre kerül, ha 12-vel egyenlő, akkor a gomb aktiválódik, ellenkező esetben a 0 gomb inaktív.

Ebben az eljárásban a kezdeti értékeket állítjuk be, néhányat a Tulajdonságok ablakban is beállíthatunk, de az egyértelműség kedvéért úgy döntöttem, hogy mindent a programkódba írok. Itt nincs okunk aggódni, amint az űrlap betöltődik a memóriába, a „Check” gomb inaktív lesz, a szövegmező és a címke betűmérete 20-ra van állítva, a maximális szöveghosszt is beállítjuk a A nyelv TextBox VBA osztálya és egyetlen sora.

5. lehetőség
Egyéni nézet űrlap létrehozása:


Hozzon létre egy privát szubrutin eljárást az űrlapmodulban, amely akkor indul el, ha a "Számítás" feliratú gombra kattint. Az eljárás során ki kell számítani a munkakör bármely alkalmazottjának napi munkájáért felhalmozott maximális összeget, amelynek nevét az 1. mező szövegmezőbe írják be, a hét azon napján, amelynek számát a 2. mezőbe írják be. A felhalmozott összeget a bányászat és az árfolyam szorzataként számítják ki. Az eljárás során a számítás eredményét a 3. mezőbe kell helyezni.
Felhasználói űrlap létrehozásához lépjen a Visual Basic kódszerkesztőbe (Alt+F11), és válassza a menü Beszúrás->Felhasználói űrlapja parancsát. Ezután hozzá kell adnia a szükséges összetevőket, és be kell állítania az űrlap és az összetevők összes paraméterét - méret, betűtípus, címek.
Ebben az esetben három TextBox elemre van szükség (TextDolgn - pozíció, TextDen - a hét napja, TextMaks - maximálisan felhalmozott összeg), két gombra (Számítás és Kilépés) és 4 címkére. Minden tulajdonság beállítható a Tulajdonságok panelen.
Ha duplán kattint a Számítás gombra, a szerkesztő létrehoz egy eljárássablont. Adjunk hozzá szöveget:

Privát Sub btnCalc_Click()
Dim r As Integer "sorszám
Dim c As Integer "oszlopszám
Dim maxSum As Integer "a maximálisan felhalmozott összeg
Dim rng As Range "egyéni tartomány
textMaks.Text = "" "a mező törlése az előző keresésből
"ha a pozíció megnevezése nincs megadva, akkor az üzenet és kilépés az eljárásból
Ha textDolgn.Text = Üres Akkor
MsgBox "Adja meg a munkacímet!"
textDolgn.SetFocus "fókuszáljon a beviteli mezőre
kilépés al
Vége ha
"ha nem adja meg a nap számát, akkor az üzenet és kilépés az eljárásból
Ha textDen.Text = Üres Akkor
MsgBox "Adja meg a hét napjának számát (1-től 7-ig)!"
textDen.SetFocus
kilépés al
Vége ha
"Nem numerikus napérték megadva
Ha nem (IsNumeric(textDen.Text)) Akkor
MsgBox "A hét nem numerikus napja (1-től 7-ig kötelező)!"
textDen.SetFocus
kilépés al
"Érvénytelen hétköznapi számot adott meg
ElseIf(CInt(textDen.Text)< 1) Or (CInt(textDen.Text) >7) Akkor
MsgBox "Érvénytelen a hét napja (1-től 7-ig kötelező)!"
textDen.SetFocus
textDen.Text = "" "törölje a mezőt
kilépés al
Vége ha
"indítsa el a ciklust a 3. sorból
r=3
"napszám a beviteli mezőből
c = CInt(szövegDen.Szöveg)
Set rng = Sheets(1).UsedRange
maxSum = -1
Ha r = 3 To rng.Rows.Count
"ha a megadott munkakör megtalálható a cellában
Ha InStr(1, Cells(r, 2), textDolgn.Text, vbTextCompare) > 0 Akkor
"Ha az összeg nagyobb, mint a maximum, akkor változtassa meg a maximum értékét egy újra
Ha CInt(Cells(r, 3)) * CInt(Cells(r, c + 3)) > maxSum Akkor maxSum = CInt(Cells(r, 3)) * CInt(Cells(r, c + 3))
Vége ha
Következő r
Ha maxSum = -1 Akkor
MsgBox "A megadott pozíció nem található"
textMax.Text = "-"
Más
textMaks.Text = CStr(maxSum)
Vége ha
Set rng = Semmi sem szabadít fel memóriát
vége al
Itt sok csekk van. Először ellenőrizze, hogy minden adat be van-e írva. Ha nem, akkor erről tájékoztatjuk a felhasználót, a beviteli fókuszt egy üres mezőre állítjuk (a felhasználó kényelme érdekében, hogy ne bökjön még egyszer az egeret), és kilépünk az eljárásból.
Ezután ellenőrizzük, hogy a napszám helyesen van-e megadva. Először is egy számnak kell lennie, másodszor pedig egy számnak 1-től 7-ig. Ha valami nem stimmel, töröljük a beviteli mezőt, ráállítjuk a fókuszt, és kilépünk az eljárásból, ismét értesítve a felhasználót a sikertelen kísérletről.
Ha minden rendben van, elkezdjük keresni a kívánt értékeket. Adjunk meg egy egyéni tartományt, amely független a sorok számától. Ezután meg kell találnia a maximális összeget a hurokban. A sejtértékeket össze kell hasonlítani valamivel. Itt nem tudjuk egyszerűen behelyettesíteni egy sor vagy oszlop első celláját, majd azt, amit a paraméterrel kell kiválasztani - pozíciók. De azt látjuk, hogy a felhalmozott összeg nem lehet kevesebb nullánál - nem lehet negatív az arány, és a munkaórák száma sem. Nos, ebben az esetben nem számolunk a "piros fordulat" lehetőségével - vagyis a korábbi időszakokra vonatkozó korrekciókkal. Tehát vegyük a kezdeti maximális összeget -1-gyel (mínusz egy).
A megadott napszámmal (ez a beviteli mező értéke plusz 3) indítunk egy hurkot az oszlop celláin keresztül.
Ellenőrizze, hogy a cella tartalmazza-e a megadott munkacímet. Egyszerűen összehasonlíthat két karakterláncot, de ez kényelmetlen, mivel a pozíciót teljes mértékben és helyesen kell megadnia. Ezért az InStr függvényt használjuk, amely 0-nál nagyobb értéket ad vissza, ha a megadott részkarakterlánc megtalálható a karakterláncban. Használhatja a Like függvényt, amely két karakterláncot is összehasonlít. Ez a fejlesztőn múlik.
Ha a cellában található pozíciót megtaláljuk, akkor az arányt megszorozzuk a ledolgozott órák számával, és összehasonlítjuk az eredményt a maximális összeggel. Ha az eredmény nagyobb, módosítsa új értékre.
Ne felejtse el átalakítani a karakterlánc-értékeket számokká, és fordítva, ahol szükséges. Még ha az Excel maga is megérti, hol található, a megbízhatóság érdekében jobb ezt megtenni.
A ciklus végighaladása után azt nézzük, hogy ha a maximális összeg -1 (kezdőérték), akkor nincs ilyen pozíció. Megjelenítünk egy üzenetet, és az áttekinthetőség kedvéért kötőjelet teszünk a mezőbe.
Ha az összeg nem egyenlő -1-gyel, akkor a talált értéket a textMaks mezőbe helyezzük.
A program végén felszabadítjuk az objektum memóriáját.
A Kilépés gombhoz szöveg is tartozik:
Privát Sub btnExit_Click()
"űrlap feltöltése
Unload Me
vége al
Az űrlap futtatásához helyezzen el egy gombot az adatlapon ("Fejlesztő" fül, "Vezérlők" rész, "Beszúrás" lista - válassza ki a gombot az űrlapvezérlők közül), és rendelje hozzá a Button1_Click makrót. Ezután a szerkesztőben írja be ennek a gombnak a kódját:
Sub Button1_Click()
UserForm1.Show
vége al
Minden, ellenőrizheti az űrlap működését.
Itt csak 5 lehetőséget adtam meg. Ha másikra van szüksége, kérheti a VK csoportban (lásd a kapcsolati oldalt). De általában minden lehetőség hasonló. Csak kisebb eltérések vannak, különösen, ha több szöveges értékű karakterláncot kell kiadnia. Ezután használhatja a textbox tulajdonságot - Multiline több sor megjelenítéséhez, és sortörés karaktereket használhat az elválasztáshoz.

A szövegmezők szöveg - a TextBox elem - beírására és szerkesztésére szolgálnak. Csakúgy, mint a Label elemnél, a TextBox elem szövege is beállítható vagy visszakereshető a Text tulajdonság segítségével.

Alapértelmezés szerint az elem eszköztárról való húzása egysoros szövegmezőt hoz létre. Ha nagy mennyiségű információt szeretne megjeleníteni egy szövegmezőben, akkor annak Multiline és ScrollBars tulajdonságait kell használnia. Ha a Többsoros tulajdonságot igaz értékre állítja, a margón kívül eső extra karakterek új sorba kerülnek.

Szövegdobozt görgethet úgy is, hogy a ScrollBars tulajdonságát a következő értékek egyikére állítja be:

    Nincs: nincs görgetés (alapértelmezett)

    Vízszintes : Vízszintes görgetést hoz létre, ha a sor hossza nagyobb, mint a szövegmező szélessége

    Függőleges : függőleges görgetést hoz létre, ha a sorok nem férnek el a szövegmezőben

    Mindkettő: függőleges és vízszintes görgetést hoz létre

A TextBox elemnek elegendő energiája van egy automatikus kitöltési mező létrehozásához. Ehhez le kell kötnünk az ingatlant AutoCompleteCustomSource a TextBox elemet valamilyen gyűjteménybe, ahonnan az adatok a mező kitöltéséhez származnak.

Tehát adjunk hozzá egy szövegmezőt az űrlaphoz, és írjuk be a következő sorokat a betöltési esemény kódjába:

Nyilvános részleges osztály Form1: Form ( public Form1() ( InitializeComponent(); AutoCompleteStringCollection forrás = new AutoCompleteStringCollection() ( "Kuznyecov", "Ivanov", "Petrov", "Kustov" ); textBox1.AutoCompleteCustomSource = forrás; textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; ) )

Az automatikus kiegészítési módnak, amelyet az AutoCompleteMode tulajdonság képvisel, számos lehetséges értéke van:

    Nincs: nincs automatikus kiegészítés

    Javaslat : Javaslatokat javasol a bevitelhez, de nem fejezi be

    append : hozzáfűzi a beírt értéket egy karakterlánchoz a listából, de nem kínál választási lehetőségeket

    SuggestAppend: javaslatokat javasol az automatikus kiegészítésre, és kiegészíti a felhasználó által megadott értéket

Sortörés

Ahhoz, hogy a TextBox elem szövege szavakat tördeljen, be kell állítani a tulajdonságot sortörés igazra állítva. Vagyis ha egy szó nem fér el a soron, akkor átkerül a következőre. Ez a tulajdonság csak többsoros szövegmezők esetén működik.

Jelszó megadása

Ezenkívül ennek az elemnek olyan tulajdonságai vannak, amelyek lehetővé teszik, hogy jelszó beírására szolgáló mezővé váljon. Tehát ehhez a PasswordChar és a UseSystemPasswordChar parancsokat kell használni.

A PasswordChar tulajdonságnak alapból nincs értéke, ha tetszőleges karakterre állítjuk, akkor ez a karakter jelenik meg a szövegmezőbe írt karakterek beírásakor.

A UseSystemPasswordChar tulajdonság hasonló hatással bír. Ha az értékét true -ra állítjuk, akkor a beírt karakterek helyett a rendszerben elfogadott jelszó karakter, például egy pont jelenik meg a szövegmezőben.

A TextBox elem összes eseménye közül meg kell jegyezni a TextChanged eseményt, amely akkor aktiválódik, amikor az elem szövege megváltozik. Például a szövegmező mellett tegyünk egy címkét az űrlapra, és tegyük úgy, hogy a szövegmezőben lévő szöveg megváltozásakor a címkén lévő szöveg is megváltozzon:

Nyilvános részleges osztály Form1: Form ( public Form1() ( InitializeComponent(); textBox1.TextChanged += textBox1_TextChanged; ) private void textBox1_TextChanged(objektum küldő, EventArgs e) ( címke1.Szöveg = textBox1.)Text;

Ez a példa azt használja Párbeszéd ablak- UserForm1, valamint a vezérlők Szövegmező- TextBox1, TextBox2, TextBox3, amelyekhez létrejön a helyi menü. Vegye figyelembe, hogy a helyi menü nevének, amely megegyezik az űrlap nevével (nem kötelező), egyedinek kell lennie. Ha már létezik ilyen nevű eszköztár, hibaüzenetet kap, amikor új eszköztárat próbál létrehozni. Ez a hiba elkerülhető, ha a panel létrehozása előtt ellenőrzi, hogy van-e ilyen nevű panel, vagy ha nem használja az.Add metódus opcionális Név argumentumát (lásd a hasonló példát2).

lehetőség II. Ha egy korábban töltse le az iemenu.ocx vezérlőt (IE Popup Menu), és adja hozzá az elérhető hivatkozások listájához, majd ezzel a vezérlővel létrehozhat egy helyi menüt (lásd a 3. példát)

  • Válasz:

    I. lehetőség

    Figyelem:
  • A MultiLine és ScrollBars tulajdonságértékek manuálisan állíthatók be
  • Válasz:
    Annak érdekében, hogy a cellákat olyan szövegmező adataival töltse fel, amelynek MultiLine tulajdonsága True értékre van állítva, használhatja a soronkénti felolvasást. Ha a cellák már kitöltöttek, törölje a cellák (oszlop) tartalmát és formátumát, miután ellenőrizte, hogy védettek-e

    I. lehetőség(sorról sorra olvasás)

    Jegyzet:
  • A kezdő nullával rendelkező számok beírásához megfelelő pipát kell hozzáadni.
  • Mivel a szövegmezőben sok sor van, célszerű letiltani a képernyőfrissítést [GYIK43 ]

    lehetőség II.(nincs soronkénti olvasás)

  • Válasz:

    Ha csak egyedi (korábban nem ismétlődő) karaktereket kell beírni a szövegmezőbe. Más szavakkal, meg kell tiltani a szövegben már jelenlévő karakterek bevitelét, majd az alábbi opciót kell használni, ahol a TextBox1_KeyPress esemény a duplikációk (ismétlések) bevitelének tiltására, a TextBox1_KeyDown esemény pedig a beszúrás tiltására. másolt adatok, amelyek ismétlődéseket tartalmazhatnak (ismétlések)

    I. lehetőség

  • Válasz:

    A következő beállítással megakadályozhatja a felesleges karakterek, például a fájlnévben nem használható karakterek beírását. Ahol a TextBox1_KeyPress eseményt a szükségtelen karakterek bevitelének megakadályozására, a TextBox1_KeyDown eseményt pedig a másolt adatok beszúrásának megakadályozására használják, amelyek tiltott karaktereket tartalmazhatnak.

  • Válasz:

    Annak meghatározására, hogy a SHIFT, CTRL, ALT billentyűk közül melyiket nyomták meg a TextBox1 nevű szövegnévvel végzett munka során, használhatja a következő lehetőséget. Az információ megjelenítése a felhasználói űrlap fejlécében, amelyre a szövegmező kerül, csak az áttekinthetőség érdekében szolgál, és természetesen nem kötelező.

    Jegyzet: Hasonló módon módosíthatja a betűtípust más vezérlőkhöz, beleértve a RefEdit, Label, ComboBox, ListBox ...
  • Válasz:

    Ha a munka során ki kell tudnia választani a szükséges munkafüzeteket, például egy szabványos párbeszédpanel segítségével, és meg kell szereznie a kiválasztott munkafüzet elérési útját (vagy csak a fájl nevét), és anélkül, hogy megnyitná, majd egyszerűen hozzon létre egy szövegdobozt TextBox1 néven, és használja a jobb oldali gombot szükség szerint (a gomb az Ön részvétele nélkül jelenik meg)



  • Támogasd a projektet – oszd meg a linket! Köszönjük!
    Olvassa el is
    kakasviadal játékszabályok kakasviadal játékszabályok Mod a minecraft 1.7-hez 10 nézhető recept.  Receptek tárgyak készítéséhez Minecraftban.  Fegyverek a Minecraftban Mod a minecraft 1.7-hez 10 nézhető recept. Receptek tárgyak készítéséhez Minecraftban. Fegyverek a Minecraftban Shilling és font – a szavak eredete Shilling és font – a szavak eredete