TextBox klase - VBA tekstlodziņu izveide. Veidlapas izveide programmā Excel VBA

Pretdrudža līdzekļus bērniem izraksta pediatrs. Bet ir ārkārtas situācijas pret drudzi, kad bērnam nekavējoties jādod zāles. Tad vecāki uzņemas atbildību un lieto pretdrudža zāles. Ko atļauts dot zīdaiņiem? Kā pazemināt temperatūru vecākiem bērniem? Kādas zāles ir visdrošākās?

Apskatīsim VBA TextBox klasi, kas ļauj ievietot tekstlodziņu uz veidlapas. Vba TextBox klase ļauj izveidot gan vairāku rindiņu, gan vienas rindiņas teksta ievades apgabalus, lai gan pēdējā gadījumā ērtāk ir izmantot MsgBox funkciju. Varat arī pievienot ritjoslas un noteikt maksimālo ievades rakstzīmju garumu. TextBox var izmantot arī kā paroles ievades komponentu.

Vispirms apskatīsim TextBox klases un tās bāzes notikuma galvenos rekvizītus un pēc tam uzrakstīsim piemēru.

TextBox VBA valodu nodarbības pasākumi

vērtību vai Teksts- tekstlodziņā ievadītais teksts

redzams– ļauj paslēpt (false) vai vēlreiz parādīt (patiess) elementu.

daudzrindu– šis rekvizīts ļauj norādīt, vai teksta lauks būs vienas rindiņas (false) vai vairāku rindiņu (true).

vārdu aplaušana– rekvizīts ir piemērots lietošanai, ja MultiLine satur vērtību true, šajā gadījumā, ja WordWrap ir iestatīts uz True, tad teksts tiks automātiski aplauzts jaunā rindā, kad tiks sasniegta TextBox teksta lauka robeža.

ritjoslas– ļauj norādīt, vai ritjoslas tiks rādītas vai nē. Īpašumam var būt šādas vērtības:

  • 0 – fmScrollBarsNav(trūkst ritjoslas)
  • 1– fmScrollBarsHorizontal(horizontālā ritjosla)
  • 2 – fmScrollBarsVertical(vertikālā ritjosla)
  • 3 – fmScrollBarsBoth(horizontālā un vertikālā ritināšana)

PasswordChar- ļauj iestatīt rakstzīmi, kas tiks parādīta ievades datu vietā. Īpašums ir būtisks, ievadot paroli.

Maksimālais garums- ļauj norādīt maksimālo rakstzīmju skaitu, ko var ievadīt teksta laukā. Noklusējums ir 0, kas nozīmē, ka nav ierobežojumu.

Tāpat kā citas vadīklas, TextBox klasē ir notikumi, galvenais notikums TextBox ir mainīt- tas notiek katru reizi, kad teksta laukā tiek ievadīta rakstzīme. Iespējams, esat redzējis šo attēlu: ievadot verifikācijas kodu, kamēr tā garums nesasniegs norādīto (piemēram, 12 rakstzīmes), poga “Pārbaudīt” nebūs pieejama. To var izdarīt arī šeit.


Labi, tagad ir laiks trenēties. Es vēlreiz neiedziļināšos visās detaļās, tāpat kā iepriekšējos rakstos, tāpēc teikšu tieši: pievienojiet projektam jaunu moduli un jaunu formu. Logā Toolbox atlasiet vadīklu Paraksts (), pievienojiet to formai, ļaujiet tai atrasties augšpusē, zem tā ievietojiet tekstlodziņu (TextBox) un pašā apakšā - lai ir poga ( ar apzīmējumu “Pārbaudīt” ). Tāpat kā iepriekš, moduļa koda redaktorā mēs rakstām procedūru:

Šeit mēs apstrādājam vienu klikšķi uz pogas, noklikšķinot uz pogas, objekta Label1 rekvizītam Caption (Uzraksts) tiks piešķirts TextBox1 teksta lauka saturs (Teksta rekvizīts).

Private Sub TextBox1_Change() Dim LenText As Byte LenText = Len(Tekstlodziņš1.Teksts) Ja LenText = 12 Tad bCheck.Enabled = True Citādi bCheck.Enabled = nepatiess beigu, ja beigu apakšpunkts

Šeit notikums Change tiek apstrādāts vba TextBox klases objekta TextBox1 teksta laukam. LenText mainīgais saglabās ievadītā teksta garumu, katru reizi ievadot datus, garums tiks pārbaudīts, ja tas ir vienāds ar 12, tad poga tiks aktivizēta, pretējā gadījumā poga 0 būs neaktīva.

Šajā procedūrā tiek iestatītas sākotnējās vērtības, dažas no tām var iestatīt arī logā Properties, taču skaidrības labad es nolēmu visu ierakstīt programmas kodā. Šeit nav par ko uztraukties, tiklīdz veidlapa tiks ielādēta atmiņā, poga “Pārbaudīt” būs neaktīva, teksta laukam un etiķetei ir iestatīts fonta lielums 20, iestatām arī maksimālo teksta garumu TextBox valodas VBA klase un tās viena rindiņa.

5. iespēja
Izveidojiet pielāgotu skata formu:


Veidlapas modulī izveidojiet privātu apakšprogrammas procedūru, kas tiek palaista, noklikšķinot uz pogas ar nosaukumu "Aprēķins". Procedūrā jāaprēķina maksimālā summa, kas uzkrāta par ikdienas darbu jebkuram no amata darbiniekiem, kura nosaukums ir ierakstīts teksta laukā Lauks1, nedēļas dienā, kuras numurs tiek ievadīts 2. laukā. Uzkrātā summa tiek aprēķināta kā ieguves un likmes reizinājums. Procedūrā aprēķina rezultāts jāievieto 3. laukā.
Lai izveidotu lietotāja veidlapu, dodieties uz Visual Basic Code Editor (Alt+F11) un izvēlnē atlasiet Ievietot->Lietotāja veidlapa. Pēc tam jums jāpievieno nepieciešamie komponenti un jākonfigurē visi formas un komponentu parametri - izmērs, fonts, virsraksti.
Šajā gadījumā ir nepieciešami trīs TextBox elementi (TextDolgn - pozīcija, TextDen - nedēļas diena, TextMaks - maksimālā uzkrātā summa), divas pogas (Aprēķināt un Iziet) un 4 etiķetes. Visus rekvizītus var iestatīt rekvizītu panelī.
Veicot dubultklikšķi uz pogas Aprēķins, redaktors izveidos procedūras veidni. Pievienosim tam tekstu:

Privāts Sub btnCalc_Click()
Dim r Kā vesels skaitlis "rindas numurs
Dim c Kā vesels skaitlis "kolonnas numurs
Dim maxSum As Integer "maksimālā uzkrātā summa
Dim rng As Range "pielāgots diapazons
textMaks.Text = "" "notīra lauku no iepriekšējās meklēšanas
"ja nav ievadīts amata nosaukums, tad ziņojums un iziet no procedūras
Ja textDolgn.Text = tukšs, tad
MsgBox "Ievadiet amata nosaukumu!"
textDolgn.SetFocus "koncentrējieties uz ievades lauku
iziet apakšā
Beigt, ja
"ja dienas numurs nav ievadīts, tad ziņojums un iziet no procedūras
Ja textDen.Text = Tukšs Tad
MsgBox "Ievadiet nedēļas dienas numuru (no 1 līdz 7)!"
textDen.SetFocus
iziet apakšā
Beigt, ja
"Ievadīta dienas vērtība, kas nav skaitliska
Ja nē (IsNumeric(textDen.Text)) Tad
MsgBox "Nedēļas diena bez skaitļiem (obligāti no 1 līdz 7)!"
textDen.SetFocus
iziet apakšā
"Ievadīts nederīgs nedēļas dienas numurs
ElseIf(CInt(tekstsDen.Teksts)< 1) Or (CInt(textDen.Text) >7) Tad
MsgBox "Nederīga nedēļas diena (nepieciešams no 1 līdz 7)!"
textDen.SetFocus
textDen.Text = "" "notīrīt lauku
iziet apakšā
Beigt, ja
"sāciet cilpu no 3. rindas
r=3
"dienas numurs no ievades lauka
c = CInt(tekstsDen.Teksts)
Set rng = Sheets(1).UsedRange
maksimālā summa = -1
Ja r = 3 Līdz rng.Rows.Count
"ja šūnā ir atrasts norādītais amata nosaukums
Ja InStr(1, Cells(r, 2), textDolgn.Text, vbTextSalīdzināt) > 0 Tad
"Ja summa ir lielāka par maksimumu, mainiet maksimuma vērtību uz jaunu
Ja CInt(Šūnas(r, 3)) * CInt(Šūnas(r, c + 3)) > maks.Summa Tad maksimālāSumma = CInt(Šūnas(r, 3)) * CInt(Šūnas(r, c + 3))
Beigt, ja
Nākamais r
Ja maxSum = -1 Tad
MsgBox "Norādītā pozīcija netika atrasta"
textMax.Text = "-"
Citādi
textMaks.Teksts = CStr(maksimālā summa)
Beigt, ja
Set rng = Nekas "atbrīvo atmiņu
beigu apakš
Šeit ir daudz čeku. Vispirms pārbaudiet, vai ir ievadīti visi dati. Ja nē, mēs par to informēsim lietotāju, iestatīsim ievades fokusu uz tukšu lauku (lietotāja ērtībām, lai viņš kārtējo reizi nebāztu peli) un izbeigsim procedūru.
Pēc tam pārbaudām, vai dienas numurs ir ievadīts pareizi. Pirmkārt, tam ir jābūt skaitlim, otrkārt, skaitlim no 1 līdz 7. Ja kaut kas nav kārtībā, ievades lauks tiek notīrīts, fokusēts uz to un iziet no procedūras, vēlreiz informējot lietotāju par neveiksmīgu mēģinājumu.
Ja viss ir kārtībā, mēs sākam meklēt vēlamās vērtības. Definēsim pielāgotu diapazonu, kas nav atkarīgs no rindu skaita. Tad jums ir jāatrod maksimālā summa cilpā. Šūnu vērtības ir ar kaut ko jāsalīdzina. Šeit mēs nevaram vienkārši aizstāt rindas vai kolonnas pirmo šūnu, pēc tam to, kas jāatlasa pēc parametra - pozīcija. Bet mēs redzam, ka uzkrātā summa nevar būt mazāka par nulli - likme nevar būt negatīva, un arī darba stundu skaits. Nu, šajā gadījumā mēs neapsveram iespēju "sarkanajam apvērsumam" - tas ir, korekcijas par iepriekšējiem periodiem. Tātad pieņemsim sākotnējo maksimālo summu, kas vienāda ar -1 (mīnus viens).
Mēs sākam cilpu caur kolonnas šūnām ar norādīto dienas numuru (tā ir ievades lauka vērtība plus 3).
Skatiet, vai šūnā ir norādītais amata nosaukums. Jūs varat vienkārši salīdzināt divas virknes, taču tas ir neērti, jo pozīcija būs jāievada pilnībā un pareizi. Tāpēc mēs izmantojam funkciju InStr, kas atgriež vērtību, kas ir lielāka par 0, ja virknē tiek atrasta norādītā apakšvirkne. Varat izmantot funkciju Like, kas arī salīdzina divas virknes. Tas ir izstrādātāja ziņā.
Ja tiek atrasta pozīcija šūnā, mēs reizinām likmi ar nostrādāto stundu skaitu un salīdzinām rezultātu ar maksimālo summu. Ja rezultāts ir lielāks, mainiet to uz jaunu vērtību.
Neaizmirstiet pārvērst virknes vērtības skaitļos un otrādi, ja nepieciešams. Pat ja Excel pati saprot, kur tas ir ietverts, uzticamības labad labāk to darīt.
Izejot ciklu, skatāmies, ja maksimālā summa ir -1 (sākotnējā vērtība), tad tādas pozīcijas nav. Parādām ziņojumu un skaidrības labad laukā ievietojam domuzīmi.
Ja summa nav vienāda ar -1, tad atrasto vērtību ievietojam laukā textMaks.
Programmas beigās mēs atbrīvojam objekta atmiņu.
Ir arī teksts pogai Iziet:
Privāts Sub btnExit_Click()
"veidlapas augšupielāde
Izlādē mani
beigu apakš
Lai palaistu veidlapu, ievietojiet pogu datu lapā (cilne "Izstrādātājs", sadaļa "Vadības", saraksts "Ievietot" - atlasiet pogu no veidlapas vadīklām) un piešķiriet tai makro Button1_Click. Pēc tam redaktorā ierakstiet šīs pogas kodu:
Apakšpoga 1_Click()
UserForm1.Show
beigu apakš
Viss, jūs varat pārbaudīt formas darbu.
Šeit esmu norādījis tikai 5 variantus. Ja jums ir nepieciešams cits, varat jautāt VK grupā (skatiet kontaktu lapu). Bet kopumā visas iespējas ir līdzīgas. Ir tikai nelielas atšķirības, it īpaši, ja jums ir jāizvada virkne ar vairākām teksta vērtībām. Pēc tam varat izmantot tekstlodziņa rekvizītu — Multiline, lai parādītu vairākas rindiņas, un izmantot rindas pārtraukuma rakstzīmes, lai atdalītu.

Teksta lauki ir paredzēti teksta ievadīšanai un rediģēšanai - TextBox elementam. Tāpat kā ar elementu Label, arī TextBox elementa tekstu var iestatīt vai izgūt, izmantojot rekvizītu Text.

Pēc noklusējuma, velkot vienumu no rīkjoslas, tiek izveidots vienas rindiņas tekstlodziņš. Lai teksta laukā parādītu lielu informācijas apjomu, ir jāizmanto tā Multiline un ScrollBars rekvizīti. Ja rekvizītu Daudzrindu iestatāt uz True, visas liekās rakstzīmes, kas atrodas ārpus piemales, tiks aplauztas jaunā rindiņā.

Varat arī ritināt tekstlodziņu, iestatot tā rekvizītu ScrollBars uz kādu no šīm vērtībām:

    Nav: nav ritināšanas (noklusējums)

    Horizontāli : izveido horizontālu ritināšanu, ja rindas garums ir lielāks par teksta lauka platumu

    Vertikāli : izveido vertikālu ritināšanu, ja rindas neietilpst teksta laukā

    Abi: izveido vertikālu un horizontālu ritināšanu

TextBox elementam ir pietiekami daudz jaudas, lai izveidotu automātiskās pabeigšanas lauku. Lai to izdarītu, mums ir jāsaista īpašums AutoCompleteCustomSource no TextBox elementa uz kādu kolekciju, no kuras tiek ņemti dati, lai aizpildītu lauku.

Tātad, pievienosim veidlapai teksta lauku un ielādes notikuma kodā ierakstīsim šādas rindiņas:

Publiskā daļēja klase Form1: Form ( public Form1() ( InitializeComponent(); AutoCompleteStringCollection avots = new AutoCompleteStringCollection() ( "Kuzņecovs", "Ivanovs", "Petrovs", "Kustov" ); textBox1.AutoCompleteCustomSource = avots; textBox1.AutopleteModeComponent = AutoCompleteMode.SuggestAppend;textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; ) )

Automātiskās pabeigšanas režīmam, ko attēlo rekvizīts AutoCompleteMode, ir vairākas iespējamās vērtības:

    Nav : nav automātiskās pabeigšanas

    Ieteikt : iesaka ievades ieteikumus, bet nepabeidz

    append : pievieno ievadīto vērtību virknei no saraksta, bet nepiedāvā izvēles iespējas

    SuggestAppend: gan ierosina ieteikumus automātiskajai pabeigšanai, gan pabeidz lietotāja ievadīto vērtību

Vārdu aplaušana

Lai teksts elementā TextBox varētu aplauzt vārdus, ir jāiestata rekvizīts vārdu aplaušana iestatīt uz patiesu. Tas ir, ja viens vārds neiederas rindā, tas tiek pārsūtīts uz nākamo. Šis rekvizīts darbosies tikai vairāku rindiņu teksta laukiem.

Paroles ievade

Arī šim elementam ir rekvizīti, kas ļauj to padarīt par lauku paroles ievadīšanai. Tāpēc šim nolūkam ir jāizmanto PasswordChar un UseSystemPasswordChar.

Rekvizītam PasswordChar pēc noklusējuma nav vērtības, ja mēs to iestatām uz jebkuru rakstzīmi, tad šī rakstzīme tiks parādīta, ievadot jebkuras rakstzīmes teksta laukā.

Īpašumam UseSystemPasswordChar ir līdzīga ietekme. Ja tā vērtību iestatām uz true , tad ievadīto rakstzīmju vietā teksta laukā tiks parādīta sistēmā pieņemtā paroles rakstzīme, piemēram, punkts.

No visiem elementa TextBox notikumiem jāatzīmē notikums TextChanged, kas tiek aktivizēts, mainoties tekstam elementā. Piemēram, veidlapā papildus teksta laukam ievietosim etiķeti un izveidosim to tā, lai, mainoties tekstam teksta laukā, mainītos arī teksts uz etiķetes:

Publiskā daļēja klase Form1: Form ( public Form1() ( InitializeComponent(); textBox1.TextChanged += textBox1_TextChanged; ) private void textBox1_TextChanged(objekta sūtītājs, EventArgs e) ( etiķete1.Teksts = textBox1.)Text;

Šis piemērs izmanto Dialoga logs- UserForm1, kā arī vadīklas Teksta lauks- TextBox1, TextBox2, TextBox3, kuriem ir izveidota konteksta izvēlne. Ņemiet vērā, ka kontekstizvēlnes nosaukumam, kas ir tāds pats kā veidlapas nosaukumam (neobligāti), ir jābūt unikālam. ja rīkjosla ar tādu pašu nosaukumu jau pastāv, jūs saņemsit kļūdu, mēģinot izveidot jaunu rīkjoslu. No šīs kļūdas var izvairīties, pirms paneļa izveides pārbaudot, vai ir panelis ar šādu nosaukumu, vai neizmantojot metodes the.Add izvēles argumentu Name (skatiet līdzīgu piemēru2).

II variants. Ja iepriekš lejupielādējiet vadīklu iemenu.ocx (IE Popup Menu) un pievienojiet to pieejamo saišu sarakstam, pēc tam varat izveidot kontekstizvēlni, izmantojot šo vadīklu (skatiet 3. piemēru)

  • Atbilde:

    I variants

    Uzmanību:
  • MultiLine un ScrollBars rekvizītu vērtības var iestatīt manuāli
  • Atbilde:
    Lai aizpildītu šūnas ar tāda teksta lauka datiem, kam MultiLine rekvizīts ir iestatīts uz True , varat izmantot lasīšanu pa rindiņām. Ja šūnas jau ir aizpildītas, izdzēsiet šo šūnu (kolonnas) saturu un formātus, pārbaudot, vai tās ir aizsargātas

    I variants(lasīšana pēc rindiņas)

    Piezīme:
  • Lai ievadītu skaitļus ar nulli sākumā, jāpievieno atbilstošs čeks.
  • Tā kā teksta laukā ir liels rindiņu skaits, ir lietderīgi atspējot ekrāna atsvaidzināšanu [FAQ43]

    II variants.(nav lasīšanas pa rindiņai)

  • Atbilde:

    Ja ir nepieciešams teksta laukā ievadīt tikai unikālas (iepriekš neatkārtojas) rakstzīmes. Citiem vārdiem sakot, jums ir jāaizliedz tekstā jau esošo rakstzīmju ievade, pēc tam izmantojiet tālāk esošo opciju, kur TextBox1_KeyPress notikums tiek izmantots, lai aizliegtu dublikātu (atkārtojumu) ievadi, un TextBox1_KeyDown notikums, lai aizliegtu ievietošanu. no kopētajiem datiem, kuros var būt dublikāti (atkārtojumi)

    I variants

  • Atbilde:

    Varat izmantot šo opciju, lai novērstu nevajadzīgu rakstzīmju ievadīšanu, piemēram, rakstzīmes, kuras nevar izmantot faila nosaukumā. Ja notikums TextBox1_KeyPress tiek izmantots, lai novērstu nevajadzīgu rakstzīmju ievadi, un notikums TextBox1_KeyDown tiek izmantots, lai novērstu kopētu datu ievietošanu, kas var saturēt aizliegtas rakstzīmes.

  • Atbilde:

    Lai noteiktu, kurš no taustiņiem SHIFT, CTRL, ALT tika nospiests, strādājot ar teksta nosaukumu TextBox1, varat izmantot šādu opciju. Informācijas parādīšana lietotāja veidlapas galvenē, kurā ievietots teksta lauks, tiek izmantota tikai skaidrības labad un, protams, nav obligāta.

    Piezīme: Līdzīgā veidā varat mainīt fontu citām vadīklām, t.sk. RefEdit, Label, ComboBox, ListBox ...
  • Atbilde:

    Ja darba laikā jums ir jāspēj atlasīt nepieciešamās darbgrāmatas, piemēram, izmantojot standarta dialoglodziņu, kā arī iegūt izvēlētās darbgrāmatas ceļu (vai tikai faila nosaukumu), un to neatverot, pēc tam vienkārši izveidojiet tekstlodziņu ar nosaukumu TextBox1 un pēc vajadzības izmantojiet pogu labajā pusē (poga parādīsies bez jūsu līdzdalības)



  • Atbalsti projektu - dalies ar saiti, paldies!
    Izlasi arī
    gaiļu cīņas spēles noteikumi gaiļu cīņas spēles noteikumi Mod for minecraft 1.7 10 skatīties receptes.  Receptes priekšmetu izgatavošanai Minecraft.  Ieroči Minecraft Mod for minecraft 1.7 10 skatīties receptes. Receptes priekšmetu izgatavošanai Minecraft. Ieroči Minecraft Šiliņš un sterliņu mārciņa - vārdu izcelsme Šiliņš un sterliņu mārciņa - vārdu izcelsme