Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Focus,TextBox-VBA]

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Focus,TextBox-VBA]

Postdi flakmask » 13/08/10 22:01

Ciao a tutti.
In una form ho diverse TextBox che vanno dalla 1 alla 9 e vengono usate dalla macro in ordine crescente proseguendo con le istruzioni.
Ora la mia necessità e quella di spostare il focus all’uscita dalla TextBox , es. TextBox1 carica, TextBox2 vuota, ecc.
Ho impostato questa macro:
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.SetFocus
End Sub

Per ogni percorso, ma di funzionare non ne vuole sapere, dove baglio?
Ciao ! grazie.
flakmask
Utente Junior
 
Post: 10
Iscritto il: 06/08/10 14:49

Sponsor
 

Re: [Focus,TextBox-VBA]

Postdi Anthony47 » 14/08/10 00:43

Premetto che, se non hai alterato l' ordine di tabulazione (e se l' hai fatto basta ripristinare la sequenza originale), il focus va su TextBox2 "naturalmente" all' uscita da TB1 quindi non ci sarebbe bisogno del codice di cui parli; comunque non hai detto che cosa succede usando quel codice e che cosa invece vorresti che succedesse.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Focus,TextBox-VBA]

Postdi flakmask » 14/08/10 08:32

Nel precedente post, dato che la sostanza non sarebbe cambiata mi sono limitato a dire “9 textBox,” in realtà ne sono 77, di cui alcune all’interno dei 5 frame, 12 cmdButton, 2 optButton e naturalmente tante label, la tabulazione ovviamente è cambiata, anche se ripristinarla non mi spaventerebbe di certo, e comunque si raggiunge lo scopo anche attraverso il mouse, ma il senso della richiesta di aiuto era “capire per migliorarsi”, ovvio che non intendo creare tante macro per scegliere dove far il puntare il focus ma soltanto su alcune.

Che cosa succede: Tasto Tab per uscire dalla TextBox1 , focus su Label15. (segue la tabulazione, ignora la macro)

Cosa volevo succedessi: Tasto Tab per uscire dalla TextBox1, focus su TextBox2. (che ignorasse la tabulazione e seguisse la macro)

Ciao.
flakmask
Utente Junior
 
Post: 10
Iscritto il: 06/08/10 14:49

Re: [Focus,TextBox-VBA]

Postdi Flash30005 » 16/08/10 07:26

Le label (etichette) non sono selezionabili quando l'userform è attivo.
Utilizzando il tab la selezione avviene nella sequenza di "costruzione" dei TextBox (Casella di testo 1,2,3 etc)
Se vuoi cambiare questo ordine è sufficiente andare nella struttura della userform e con tasto destro del mouse selezionare "Ordine di tabulazione" e utilizzare gli appositi comandi per spostare l'ordine.

Se questa indicazione non soddisfa la tua esigenza posta ancora

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Focus,TextBox-VBA]

Postdi flakmask » 16/08/10 10:34

Ciao Flash
Mi rendo conto che a volte capire “i capricci” dei pellegrini di forum diventa difficile e inspiegabile, il tuo suggerimento, e ancor prima quello di Anthony, è stato già messo in atto, ho rimesso in ordine la tabulazione con il metodo da voi consigliatomi, (che comunque conoscevo) e il tutto va secondo necessità.
Quindi, per quando riguarda la mia esigenza prettamente funzionale non posso che essere più che soddisfatto, e vi ringrazio per l’immediatezza delle risposte, mentre per quando interessa il concetto “capire per migliorarsi”,da me espresso nel precedente post, lo sono un po’ meno, la mia più che un’esigenza vera era un provare qualcosa per conoscere di più, e il tutto leggendo un vecchio topic di questo forum, dove un utente aveva l’esigenza di controllare il focus di textbox, le fu suggerito da Anthony di utilizzare questa macro:
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.SetFocus
End Sub

Cosa che ho provato a fare io, ma senza risultato, e da qui, come mai? perché?

Ora dato che, come già detto, il tutto funziona secondo necessità, mi direi soddisfatto.
Grazie di nuovo.
flakmask
Utente Junior
 
Post: 10
Iscritto il: 06/08/10 14:49

Re: [Focus,TextBox-VBA]

Postdi Flash30005 » 16/08/10 15:52

Per provare ho dovuto mettere il focus al tesxtbox3 altrimenti con il tab, come dicevo prima, dal textbox1 viene selezionato il textbox2 quindi ho usato la tua macro inserita nello stesso codice dell'userform1 (non nel modulo) e la macro funziona benissimo
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.SetFocus
End Sub


Suppongo che il tuo problema sia quello di aver inserito il codice in un modulo e così facendo non hai alcun risultato

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Focus,TextBox-VBA]

Postdi Anthony47 » 17/08/10 01:30

Avevo chiesto "che cosa succede usando quel codice" perche' per quello che avevo potuto provare il codice funziona. Prova a mettere un break (F9) sull' istruzione ".SetFocus" e controlla che le istruzioni siano eseguite all' exit dal tuo textbox, e che dopo di esse non ne vengono eseguite altre inattese.

Tuttavia la tua risposta ("Tasto Tab per uscire dalla TextBox1 , focus su Label15") mi ha fatto ricordare che avevo letto in numerosi siti di problemi sul setfocus (trattato ad esempio qui: viewtopic.php?p=418768), mai completamente chiariti.
In caso sia necessario modificare la sequenza di tabulazione impostata col tasto dx sulla form si potrebbe usare lo stesso metodo suggerito a piter123 nel topic sopra linkato, cioe' mettere Enable=False su tutti i controlli eccetto quello target (da ripristinare poi nella Private Sub TextBoxXX_Enter)

Con l' avvertenza che oggi (due anni dopo la prima risposta) a piter123 suggerirei invece di usare
Codice: Seleziona tutto
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox4.Text < 0 Or TextBox4.Text > 30 Then Cancel = True
End Sub

Leggi anche il messaggio di Flash sopra questo mio.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Focus,TextBox-VBA]":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti