Classe TextBox - Creazione di caselle di testo VBA. Creazione di un modulo in Excel VBA

Gli antipiretici per i bambini sono prescritti da un pediatra. Ma ci sono situazioni di emergenza per la febbre, quando il bambino ha bisogno di medicine immediatamente. Quindi i genitori si assumono la responsabilità e usano farmaci antipiretici. Cosa è permesso dare ai bambini? Come abbassare la temperatura nei bambini più grandi? Quali farmaci sono i più sicuri?

Diamo un'occhiata alla classe TextBox VBA, che consente di posizionare una casella di testo su un modulo. La classe vba TextBox consente di creare aree di immissione di testo sia su più righe che su riga singola, sebbene in quest'ultimo caso sia più conveniente utilizzare la funzione MsgBox. Puoi anche aggiungere barre di scorrimento e definire la lunghezza massima dei caratteri di input. Il TextBox può essere utilizzato anche come componente per l'immissione di password.

Diamo prima un'occhiata alle proprietà principali della classe TextBox e al suo evento di base, quindi scriviamo un esempio.

Eventi di classi di lingua VBA TextBox

valore o Testo- il testo che viene inserito nel TextBox

visibile– consente di nascondere (falso) o mostrare nuovamente (vero) l'elemento.

multilinea– questa proprietà consente di specificare se il campo di testo sarà a riga singola (falso) o multi riga (vero).

involucro di parole– la proprietà è rilevante da utilizzare se MultiLine contiene il valore true, in questo caso, se WordWrap è impostato su true, il testo andrà automaticamente a capo su una nuova riga quando viene raggiunto il bordo del campo di testo TextBox.

barre di scorrimento– consente di specificare se visualizzare o meno le barre di scorrimento. La proprietà può assumere i seguenti valori:

  • 0 – fmScrollBarsNessuno(mancano le barre di scorrimento)
  • 1– fmScrollBarsHorizontal(barra di scorrimento orizzontale)
  • 2 – fmScrollBarsVertical(barra di scorrimento verticale)
  • 3 – fmScrollBarsEntrambi(scorrimento orizzontale e verticale)

PasswordChar- consente di impostare il carattere che verrà visualizzato al posto dei dati di input. La proprietà è rilevante quando si inserisce una password.

Lunghezza massima- permette di specificare il numero massimo di caratteri che possono essere inseriti nel campo di testo. Il valore predefinito è 0, il che significa che non c'è limite.

Come altri controlli, la classe TextBox ha eventi, l'evento principale per un TextBox è modificare- si verifica ogni volta che viene inserito un carattere nel campo di testo. Potresti aver visto questa immagine: quando inserisci un codice di verifica, finché la sua lunghezza non raggiunge quella specificata (ad esempio 12 caratteri), il pulsante "Verifica" non sarà disponibile. Questo può essere fatto anche qui.


Ok, ora è il momento di esercitarsi. Non approfondirò di nuovo tutti i dettagli, come negli articoli precedenti, quindi lo dirò chiaramente: aggiungi un nuovo modulo e un nuovo modulo al progetto. Seleziona il controllo Caption () dalla finestra ToolBox, aggiungilo al modulo, lascia che sia in alto, metti una casella di testo (TextBox) sotto di esso e in fondo - lascia che ci sia un pulsante ( etichettato "Controlla" ). Bene, come prima, nell'editor di codice per il modulo, scriviamo la procedura:

Qui stiamo elaborando un singolo clic sul pulsante, quando si fa clic sul pulsante, alla proprietà Caption dell'oggetto Label1 (Inscription) verrà assegnato il contenuto del campo di testo TextBox1 (proprietà Text).

Private Sub TextBox1_Change() Dim LenText As Byte LenText = Len(TextBox1.Text) Se LenText = 12 Allora bCheck.Enabled = True Else bCheck.Enabled = False End If End Sub

Qui viene elaborato l'evento Change per il campo di testo dell'oggetto TextBox1 della classe vba TextBox. La variabile LenText memorizzerà la lunghezza del testo inserito, ad ogni inserimento dei dati verrà verificata la lunghezza, se è uguale a 12 verrà attivato il pulsante, altrimenti il ​​pulsante 0 sarà inattivo.

In questa procedura vengono impostati i valori iniziali, alcuni di essi possono essere impostati anche nella finestra Proprietà, ma per chiarezza ho deciso di scrivere tutto nel codice del programma. Non c'è nulla di cui preoccuparsi qui, non appena il modulo viene caricato in memoria, il pulsante "Verifica" sarà inattivo, la dimensione del carattere per il campo di testo e l'etichetta è impostata su 20, impostiamo anche la lunghezza massima del testo per il TextBox Classe VBA della lingua e la sua singola riga.

Opzione 5
Crea un modulo di visualizzazione personalizzato:


Crea una procedura di subroutine privata nel modulo del modulo che viene avviato quando si fa clic sul pulsante "Calcolo". La procedura dovrebbe calcolare l'importo massimo maturato per il lavoro quotidiano di uno qualsiasi dei dipendenti della posizione, il cui nome è inserito nel campo di testo Campo1, il giorno della settimana, il cui numero è inserito nel Campo2. L'importo maturato è calcolato come il prodotto dell'estrazione mineraria e del tasso. La procedura dovrebbe inserire il risultato del calcolo nel campo 3.
Per creare un modulo utente, vai all'editor di codice di Visual Basic (Alt+F11) e seleziona Inserisci->Modulo utente dal menu. Quindi è necessario aggiungere i componenti necessari e configurare tutti i parametri del modulo e dei componenti: dimensioni, carattere, titoli.
In questo caso sono necessari tre elementi TextBox (TextDolgn - posizione, TextDen - giorno della settimana, TextMaks - importo massimo accumulato), due pulsanti (Calcola ed Esci) e 4 etichette. Tutte le proprietà possono essere impostate nel pannello Proprietà.
Se si fa doppio clic sul pulsante Calcolo, l'editor creerà un modello di procedura. Aggiungiamo del testo ad esso:

Sub privato btnCalc_Click()
Dim r As Integer "numero di riga
Dim c As Integer "numero di colonna
Dim maxSum As Integer "l'importo massimo maturato
Dim rng As Range "gamma personalizzata
textMaks.Text = "" "cancellando il campo dalla ricerca precedente
"se il titolo della posizione non è inserito, allora il messaggio e si esce dalla procedura
Se textDolgn.Text = vuoto allora
MsgBox "Inserisci titolo professionale!"
textDolgn.SetFocus "concentrati sul campo di input
esci sub
Finisci se
"se non viene inserito il numero del giorno, allora il messaggio e si esce dalla procedura
Se textDen.Text = vuoto allora
MsgBox "Inserisci il numero del giorno della settimana (da 1 a 7)!"
testoDen.SetFocus
esci sub
Finisci se
"Immesso un valore del giorno non numerico
In caso contrario (IsNumeric(textDen.Text)) Allora
MsgBox "Giorno della settimana non numerico (richiesto da 1 a 7)!"
testoDen.SetFocus
esci sub
"Numero del giorno della settimana inserito non valido
ElseIf(CInt(textDen.Text)< 1) Or (CInt(textDen.Text) >7) Allora
MsgBox "Giorno della settimana non valido (richiesto da 1 a 7)!"
testoDen.SetFocus
textDen.Text = "" "cancella il campo
esci sub
Finisci se
"inizia il ciclo dalla riga 3
r=3
"numero del giorno dal campo di immissione
c = CInt(textDen.Text)
Imposta rng = Fogli(1).UsedRange
Somma massima = -1
Per r = 3 Per rng.Rows.Count
"se il titolo di lavoro specificato si trova nella cella
Se InStr(1, Cells(r, 2), textDolgn.Text, vbTextCompare) > 0 Allora
"se la somma è maggiore del massimo, cambia il valore del massimo in uno nuovo
If CInt(Cells(r, 3)) * CInt(Cells(r, c + 3)) > maxSum Then maxSum = CInt(Cells(r, 3)) * CInt(Cells(r, c + 3))
Finisci se
Avanti r
Se sommamassima = -1 Allora
MsgBox "La posizione specificata non è stata trovata"
textMax.Text = "-"
Altro
textMaks.Text = CStr(somma massima)
Finisci se
Set rng = Niente "libera memoria
fine sub
Ci sono molti controlli qui. Innanzitutto, controlla se tutti i dati sono stati inseriti. In caso contrario, informeremo l'utente di ciò, imposteremo il focus dell'input su un campo vuoto (per comodità dell'utente, in modo che non tocchi il mouse ancora una volta) e uscire dalla procedura.
Quindi controlliamo se il numero del giorno è inserito correttamente. In primo luogo, deve essere un numero e, in secondo luogo, un numero da 1 a 7. Se qualcosa non va, svuotiamo il campo di input, poniamo il focus su di esso ed esci dalla procedura, informando nuovamente l'utente di un tentativo non riuscito.
Se tutto va bene, iniziamo a cercare i valori desiderati. Definiamo un intervallo personalizzato in modo che sia indipendente dal numero di righe. Quindi devi trovare l'importo massimo nel ciclo. I valori delle celle devono essere confrontati con qualcosa. Qui non possiamo semplicemente sostituire la prima cella di una riga o di una colonna, quindi ciò che deve essere selezionato dal parametro - posizione. Ma vediamo che l'importo maturato non può essere inferiore a zero, il tasso non può essere negativo e anche il numero di ore lavorative. Ebbene, in questo caso, non consideriamo la possibilità di una "inversione rossa" - cioè correzioni per periodi precedenti. Prendiamo quindi l'importo massimo iniziale pari a -1 (meno uno).
Iniziamo un ciclo attraverso le celle della colonna con il numero specificato del giorno (questo è il valore del campo di input più 3).
Verifica se la cella contiene il titolo di lavoro specificato. Puoi semplicemente confrontare due stringhe, ma questo è scomodo, poiché dovrai inserire la posizione per intero e correttamente. Pertanto, utilizziamo la funzione InStr, che restituisce un valore maggiore di 0 se la sottostringa specificata viene trovata nella stringa. Puoi usare la funzione Like, che confronta anche due stringhe. Dipende dallo sviluppatore.
Se viene trovata la posizione nella cella, moltiplichiamo la tariffa per il numero di ore lavorate e confrontiamo il risultato con l'importo massimo. Se il risultato è maggiore, cambialo con un nuovo valore.
Non dimenticare di convertire i valori delle stringhe in numeri e viceversa ove necessario. Anche se Excel stesso capisce dove è contenuto, è meglio farlo per affidabilità.
Dopo aver attraversato il ciclo, osserviamo, se l'importo massimo è -1 (valore iniziale), non esiste tale posizione. Mostriamo un messaggio e mettiamo un trattino nel campo per chiarezza.
Se la somma non è uguale a -1, posizioniamo il valore trovato nel campo textMaks.
Liberiamo la memoria dell'oggetto alla fine del programma.
C'è anche del testo per il pulsante Esci:
Sub privato btnExit_Click()
"caricamento modulo
Scaricami
fine sub
Per eseguire il modulo, posizionare un pulsante sulla scheda tecnica (la scheda "Sviluppatore", la sezione "Controlli", l'elenco "Inserisci" - selezionare il pulsante dai controlli del modulo) e assegnargli la macro Button1_Click. Quindi, nell'editor, scrivi il codice per questo pulsante:
Pulsante secondario1_Click()
UserForm1.Mostra
fine sub
Tutto, puoi controllare il lavoro del modulo.
Ho dato solo 5 opzioni qui. Se ne hai bisogno di un altro, puoi chiedere nel gruppo VK (vedi la pagina dei contatti). Ma in generale, tutte le opzioni sono simili. Ci sono solo piccole differenze, soprattutto se è necessario generare una stringa con più valori di testo. Quindi puoi utilizzare la proprietà della casella di testo - Multiriga per visualizzare più righe e utilizzare i caratteri di interruzione di riga per separare.

I campi di testo sono destinati all'immissione e alla modifica del testo: l'elemento TextBox. Proprio come con l'elemento Label, il testo dell'elemento TextBox può essere impostato o recuperato utilizzando la proprietà Text.

Per impostazione predefinita, trascinando un elemento da una barra degli strumenti viene creata una casella di testo a riga singola. Per visualizzare grandi quantità di informazioni in un campo di testo, è necessario utilizzare le sue proprietà Multiline e ScrollBars. Quando si imposta la proprietà Multiline su true, tutti i caratteri in eccesso che non rientrano nel margine verranno inseriti in una nuova riga.

Puoi anche far scorrere una casella di testo impostando la relativa proprietà ScrollBars su uno dei seguenti valori:

    Nessuno : nessuno scorrimento (predefinito)

    Orizzontale : crea uno scorrimento orizzontale quando la lunghezza della linea è maggiore della larghezza del campo di testo

    Verticale : crea uno scorrimento verticale se le linee non rientrano nel campo di testo

    Entrambi : crea lo scorrimento verticale e orizzontale

L'elemento TextBox ha potenza sufficiente per creare un campo di completamento automatico. Per fare ciò, dobbiamo vincolare la proprietà AutoCompleteCustomSource dell'elemento TextBox a una raccolta da cui vengono presi i dati per riempire il campo.

Quindi, aggiungiamo un campo di testo al modulo e scriviamo le seguenti righe nel codice dell'evento di caricamento:

Classe parziale pubblica Form1: Form ( public Form1() ( InitializeComponent(); AutoCompleteStringCollection source = new AutoCompleteStringCollection() ( "Kuznetsov", "Ivanov", "Petrov", "Kustov" ); textBox1.AutoCompleteCustomSource = source; textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; ) )

La modalità di completamento automatico, rappresentata dalla proprietà AutoCompleteMode, ha diversi valori possibili:

    Nessuno: nessun completamento automatico

    Suggerisci : suggerisce suggerimenti per l'input, ma non completa

    append : aggiunge il valore immesso a una stringa dall'elenco, ma non offre opzioni per la selezione

    SuggestAppend : entrambi suggeriscono suggerimenti per il completamento automatico e completano il valore inserito dall'utente

Involucro di parole

Affinché il testo nell'elemento TextBox possa racchiudere le parole, è necessario impostare la proprietà involucro di parole impostato su vero. Cioè, se una parola non si adatta alla riga, viene trasferita a quella successiva. Questa proprietà funziona solo per campi di testo multilinea.

Inserimento password

Inoltre, questo elemento ha proprietà che ti consentono di renderlo un campo per l'immissione di una password. Quindi, per questo è necessario utilizzare PasswordChar e UseSystemPasswordChar .

La proprietà PasswordChar non ha valore per impostazione predefinita, se la impostiamo su qualsiasi carattere, questo carattere verrà visualizzato quando si inseriscono caratteri nel campo di testo.

La proprietà UseSystemPasswordChar ha un effetto simile. Se impostiamo il suo valore su true , al posto dei caratteri inseriti, nel campo di testo verrà visualizzato il carattere della password accettato nel sistema, ad esempio un punto.

Di tutti gli eventi dell'elemento TextBox, va notato l'evento TextChanged, che si attiva quando il testo nell'elemento cambia. Ad esempio, mettiamo un'etichetta sul modulo oltre al campo di testo e facciamo in modo che quando il testo nel campo di testo cambia, anche il testo sull'etichetta cambia:

Classe parziale pubblica Form1: Form ( public Form1() ( InitializeComponent(); textBox1.TextChanged += textBox1_TextChanged; ) private void textBox1_TextChanged(object sender, EventArgs e) ( label1.Text = textBox1.Text; ) )

Questo esempio usa Finestra di dialogo- UserForm1 così come i controlli Campo di testo- TextBox1, TextBox2, TextBox3 per i quali viene creato il menu contestuale. Si noti che il nome del menu contestuale, che è uguale al nome del modulo (facoltativo), deve essere univoco. se esiste già una barra degli strumenti con lo stesso nome, verrà visualizzato un errore quando si tenta di creare una nuova barra degli strumenti. Questo errore può essere evitato controllando se esiste un pannello con questo nome prima di creare il pannello, o non utilizzando l'argomento Nome opzionale del metodo.Add (vedi esempio simile2)

Opzione II. Se una in precedenza scarica il controllo iemenu.ocx (IE Popup Menu) e aggiungilo all'elenco dei collegamenti disponibili, quindi puoi creare un menu contestuale utilizzando questo controllo (vedi esempio 3)

  • Risposta:

    Opzione I

    Attenzione:
  • I valori delle proprietà MultiLine e ScrollBars possono essere impostati manualmente
  • Risposta:
    Per riempire le celle con i dati di un campo di testo la cui proprietà MultiLine è impostata su True , puoi utilizzare la lettura riga per riga. Se le celle sono già riempite, elimina il contenuto e i formati di queste celle (colonna), dopo aver verificato se sono protette

    Opzione I(lettura riga per riga)

    Nota:
  • Per inserire numeri con uno zero iniziale, è necessario aggiungere un segno di spunta appropriato.
  • Con un numero elevato di righe nel campo di testo, ha senso disabilitare l'aggiornamento dello schermo [FAQ43 ]

    Opzione II.(nessuna lettura riga per riga)

  • Risposta:

    Se è necessario inserire solo caratteri univoci (in precedenza non ripetuti) nel campo di testo. In altre parole, è necessario vietare l'inserimento di caratteri già presenti nel testo, quindi utilizzare l'opzione sottostante, dove l'evento TextBox1_KeyPress viene utilizzato per vietare l'inserimento di duplicati (ripetizioni), e l'evento TextBox1_KeyDown per vietare l'inserimento di dati copiati che possono contenere duplicati (ripetizioni)

    Opzione I

  • Risposta:

    È possibile utilizzare la seguente opzione per impedire l'immissione di caratteri non necessari, ad esempio caratteri che non possono essere utilizzati in un nome file. Dove l'evento TextBox1_KeyPress viene utilizzato per impedire l'immissione di caratteri non necessari e l'evento TextBox1_KeyDown viene utilizzato per impedire l'inserimento di dati copiati, che potrebbero contenere caratteri non consentiti.

  • Risposta:

    Per determinare quale dei tasti MAIUSC, CTRL e ALT sono stati premuti quando si lavora con un nome di testo denominato TextBox1, è possibile utilizzare l'opzione seguente. La visualizzazione delle informazioni nell'intestazione del form utente su cui è posizionato il campo di testo viene utilizzata solo per chiarezza e, ovviamente, non è obbligatoria.

    Nota: Allo stesso modo, puoi cambiare il carattere per altri controlli, incl. RefEdit, Etichetta, ComboBox, ListBox ...
  • Risposta:

    Se, nel corso del lavoro, devi essere in grado di selezionare le cartelle di lavoro necessarie, ad esempio utilizzando una finestra di dialogo standard, e anche ottenere il percorso (o solo il nome del file) della cartella di lavoro selezionata e senza aprirla, quindi crea semplicemente una casella di testo con il nome TextBox1 e usa il pulsante a destra secondo necessità (il pulsante apparirà senza la tua partecipazione)



  • Sostieni il progetto - condividi il link, grazie!
    Leggi anche
    regole del gioco del combattimento di galli regole del gioco del combattimento di galli Mod per Minecraft 1.7 10 ricette per guardare.  Ricette per creare oggetti in Minecraft.  Armi in Minecraft Mod per Minecraft 1.7 10 ricette per guardare. Ricette per creare oggetti in Minecraft. Armi in Minecraft Scellino e sterlina: l'origine delle parole Scellino e sterlina: l'origine delle parole