Codice per gestire il click al conferma, nel caso di validazione eseguita per singolo campo. Repository dei file su GitHub: github.com/Nic...
Пікірлер: 13
@NickTheGeek4 жыл бұрын
Al minuto 17:49 faccio riferimento al campo CAP dicendo che è quello che avrebbe dato problemi, ma in realtà quello sarebbe stato il campo Nome (come visto pochi secondi prima); la sostanza comunque non cambia.
@droitaucoeur13 жыл бұрын
Ciao Nicola. Ecco un esempio di modulo di classe che permette di gestire tutte le textbox di un formulario. Nel Modulo di classe Option Explicit Private WithEvents TBx As MSForms.TextBox Public Sub Init(ByVal TxtBox As MSForms.TextBox) Set TBx = TxtBox End Sub Qui, con l'evento Exit, aggiungi le tue condizioni, senza farlo per tutte le textbox. Private Sub TBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If TBx.SelStart = 0 Then KeyAscii = AscW(UCase$(ChrW$(KeyAscii))) End Sub Option Explicit Private Cln As New Collection Private Sub UserForm_Initialize() Dim N As Integer Ajout TextBox4 For N = 20 To 35 Step 5: Ajout Me("TextBox" & N): Next N End Sub Private Sub Ajout(ByVal TBx As MSForms.TextBox) Dim SBx As SupportTBx Set SBx = New SupportTBx SBx.Init TBx Cln.Add SBx End Sub
@gurso8194 жыл бұрын
Scusi la domanda. In alternativa, dopo l'evento exit su ogni controllo, in caso di errore, si potrebbe riportare il focus su quel controllo?
@NickTheGeek4 жыл бұрын
Ciao, sì si potrebbe con l'evento SetFocus dopo aver intercettato l'errore, ma mi sembra di averlo provato in passato e aveva qualche problema, tipo che il focus si spostava comunque al controllo successivo. Se vuoi comunque puoi fare un tentativo.
@gurso8194 жыл бұрын
Grazie della risposta. Farò una prova appena possibile. In ogni caso complimenti per l'ottimo lavoro. Un saluto.
@NickTheGeek4 жыл бұрын
Grazie per i complimenti, ciao.
@tranceandflight49923 жыл бұрын
@@NickTheGeek usate cancel= true funziona il focus torna su quel campo
@NickTheGeek3 жыл бұрын
@@tranceandflight4992 Grazie
@nicksan7263 Жыл бұрын
Ciao Nick, mi sono incartato sul controllo campi nel mio Gestionale e non capisco come uscirne. Un esempio su tutti: ho creato la Sub (che allego) e vorrei che il controllo sul campo lo facesse nel momento dell'inserimento, cioè se premo Tab e non inserisco nulla allora mi deve dare il messaggio altrimenti scrive in maiuscolo. Private Sub TxtCognome_Change() If TxtCognome.Text "" Then TxtCognome.Text = UCase(TxtCognome.Text) Else TxtCognome.BackColor = rgbRed MsgBox "QUESTO CAMPO E' OBBLIGATORIO", vbCritical, "ATTENZIONE" TxtCognome.BackColor = rgbWhite TxtCognome.SetFocus End If End Sub Il problema è sul controllo vuoto .. non mi compare nulla e prosegue sul campo successivo. Ho provato con l'evento Exit anziché Change e funziona ma l'inserimento avviene in minuscolo nel campo e il SetFocus non si riposiziona nel campo Cognome vuoto. Come potrei fare?
@NickTheGeek Жыл бұрын
Ciao, potresti provare con l'evento Exit scrivendo l'istruzione Cancel = True al posto del SetFocus: Private Sub txtCognome_Exit(ByVal Cancel As MSForms.ReturnBoolean) If txtCognome.Text "" Then txtCognome.Text = UCase(txtCognome.Text) Else txtCognome.BackColor = rgbRed MsgBox "QUESTO CAMPO E' OBBLIGATORIO", vbCritical, "ATTENZIONE" txtCognome.BackColor = rgbWhite Cancel = True End If End Sub
@nicksan7263 Жыл бұрын
@@NickTheGeek Dimenticavo di dirti che la Sub è all'interno del Modulo1 (che richiamo alla fine dell'inserimento di tutti i campi), quindi così non funziona perchè mi dice che "la variabile Cancel non è definita". Il controllo funziona solo se è all'interno della Sub (non nel Modulo).
@NickTheGeek Жыл бұрын
Allora non penso che si possa fare, perché da quello che so il Cancel può essere relativo solo a un CommandButton, e non può essere inserito in una normale subroutine.
@nicksan7263 Жыл бұрын
@@NickTheGeek Ok va bene, allora ho riportato tutti i controlli all'interno della Sub, anzichè nel Modulo, e funziona tutto. Grazie Nick.