Condividi:        

Problema di SetFocus e Exit nelle Textbox (ActiveX)

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

Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Dondon » 22/03/20 12:49

Ciao a tutti,
utilizzo il VBA di Excel 2007 (s.o. Windows 10), e non riesco a gestire il focus sugli oggetti (controlli ActiveX) che uso, in particolare le Textbox. Se scrivo istruzioni tipo "Textbox1.SetFocus" mi dà puntualmente errore (di run-time 438: proprietà o metodo non supportati dall'oggetto). L'istruzione "Setfocus" non appare nell'elenco che si apre in automatico mentre si digita "Textbox.", mentre ne compaiono molte altre. Inoltre, non compare, sempre per le Textbox, la scelta della routine Exit (ci sono Change, Dblclick, ecc, ma Exit no).
Vi chiedo, con umiltà perché non sono certo un grande conoscitore del VBA, un aiuto per poter sistemare le cose. Forse sbaglio in qualcosa di basilare che mi sfugge, oppure serve di installare qualcosa in più che non so...?
Tra l'altro, la cosa si presenta anche su un altro PC (sempre con Office 2007 e Windows 10), ma anche installando Office 2016 le cose non cambiano!
Grazie a chiunque voglia aiutarmi!
Dondon
Newbie
 
Post: 4
Iscritto il: 22/03/20 12:45

Sponsor
 

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Marius44 » 22/03/20 17:44

Ciao
Per "indovinare" cosa ti capita ci vorrebbe la "palla di vetro".

A parte la battuta (consentimela in periodo di "prigionia"), prova ad allegare il file (senza dati sensibili).
Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Anthony47 » 22/03/20 18:02

Intanto, "Benvenuto Dondon"

Eh, Mario, sante parole le tue...

Non sapendo come l'utente sta procedendo faccio un esempio di uno scenario di questo tipo, puramente a scopo dimostrativo:
-un foglio di lavoro contenente un ActiveX TextBox1, che diventa visibile quando si seleziona una cella nell'intervallo B2:B20
-viene posizionato alla destra della cella selezionato, visualizzando in modo automatico il contenuto di questa cella, ma pronto per essere modificato
-quando si preme Enter, il contenuto del textbox viene copiato nella cella che era stata selezionata
-se invece si preme "freccia giù" oppure "freccia su" si passa sulla cella sottostante o soprastante senza copiare il contenuto del textbox

Tutto questo e' gestibile col seguente codice, da mettere sul modulo vba del foglio su cui lavori:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ckArea = "B2:B20"
If Not Application.Intersect(Range(ckArea), Target) Is Nothing And Target.Count = 1 Then
'posizione del Textbox:
    Me.TextBox1.Top = Target.Top
    Me.TextBox1.Left = Target.Offset(0, 1).Left
'Valore Iniziale:
'   Debug.Print Target.Address
    Me.TextBox1.Value = Me.TextBox1.TopLeftCell.Offset(0, -1).Value
    Me.TextBox1.Activate
    Me.TextBox1.SelStart = 0
    Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Else
    Me.TextBox1.Visible = False
End If
End Sub



Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Debug.Print KeyCode
If KeyCode = vbKeyReturn Then
    Me.TextBox1.TopLeftCell.Offset(0, -1).Value = Me.TextBox1.Value
    Me.TextBox1.Visible = False
    Me.TextBox1.TopLeftCell.Offset(1, -1).Select
ElseIf KeyCode = 40 Then        'freccia giu'
    Me.TextBox1.Visible = False
    Me.TextBox1.TopLeftCell.Offset(1, -1).Select
ElseIf KeyCode = 38 Then        'freccia su
    Me.TextBox1.Visible = False
    Me.TextBox1.TopLeftCell.Offset(-1, -1).Select
End If
End Sub


Vediamo se Dondon trova lo spunto per il suo caso... Altrimenti seguira' certamente il consiglio di Marius
Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Dondon » 23/03/20 16:24

Provo ad allegare un file di esempio che ho fatto
Ultima modifica di Dondon su 23/03/20 16:26, modificato 1 volte in totale.
Dondon
Newbie
 
Post: 4
Iscritto il: 22/03/20 12:45

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Dondon » 23/03/20 16:25

Dondon
Newbie
 
Post: 4
Iscritto il: 22/03/20 12:45

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Dondon » 23/03/20 16:29

L'esempio piu' banale del mondo: se la TextBox non contiene nulla, premendo il pulsante ho il msg "NO" da MessageBox, altrimenti ho "OK".
Il mio quesito è: quando chiudo la MessageBox, vorrei poter avere il controllo sulla TextBox, ovvero vorrei essere nella situazione di poterci già scrivere senza dover posizionarmici con mouse o tab. Senza ulteriori istruzioni, infatti, il controllo non sta né su TB, né sul pulsante. Mettendo nel listato del pulsante l'istruzione, che dovrebbe funzionare, "TextBox1.SetFocus" ottengo errore 438 - proprietà o metodo non supportati, che potete verificare.
Dondon
Newbie
 
Post: 4
Iscritto il: 22/03/20 12:45

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Marius44 » 23/03/20 18:20

Ciao
Non posso scaricare il file perchè Fildropper mi fa andare in crash il PC (non chiedetemi perchè. Non lo so ma oramai evito anche solo di tentare di scaricare)

La TextBox sulla quale vuoi dare il Focus è l'unica o vi sono altri Control nel Foglio (o nella UserForm)?
Se fosse l'unico controllo il Focus non potrà mai riceverlo (a quanto ne so io).

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Anthony47 » 23/03/20 18:38

Il TextBox non ha il metodo SetFocus, e' inutile che ci provi; devi invece usare quel che Microsoft ti mette a disposizione (che in genere e' molto di piu' di quello che riusciamo a sfruttare).

Trovi qualcosa che descrive il TextBox qui: https://docs.microsoft.com/en-us/dotnet ... =vsto-2017

Vedrai quindi che esiste il metodo Activate, che "Attiva il textbox"; userai cioe':
Codice: Seleziona tutto
    Me.TextBox1.Activate
    Me.TextBox1.SelStart = 0
    Me.TextBox1.SelLength = Len(Me.TextBox1.Text)
Come ho fatto io nel codice di esempio che ho gia' pubblicato.
Le istruzioni successive all' Activate servono per selezionare il testo nel TextBox, in modo che digitando qualcosa il vecchio contenuto viene sostituito

@Mario: si tratta di un ActiveX posizionato direttamente sul foglio

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Marius44 » 23/03/20 19:28

Ciao a tutti
Grazie per la precisazione Anthony, ma ero un po' ... fuori strada.
Un chiarimento: invece di TextBox1.Activate si potrebbe usare TextBox1.Select? Avrebbe lo stesso effetto?

Ciao e ancora Grazie,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi alfrimpa » 23/03/20 22:27

Scusate l’intromissione.

Vero è che la Textbox non ha l’evento SetFocus ma se scrivo

Codice: Seleziona tutto
Me.TextBox1.SetFocus


perchè tutto funziona perfettamente?

Anthony illuminaci :D

Alfredo
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Anthony47 » 24/03/20 02:15

Alfredo, per rispondere con precisione dovrei appartenere alla categoria degli stregoni...
Quel "Me" a cosa punta?
Copiando una frase letta spesso, mi vien da dire "Pubblica un file di esempio" :D
Volendo comunque "sparare" qualche ipotesi: stai usando On Error Resume Next? Sei in una Userform invece che su un Foglio?

Mario, immagino che nel frattempo hai gia' fatto la prova e verificato che TextBox1.Select non produce lo stesso risultato di Textbox1.Activate; in particolare ti ritrovi col Textbox "selezionato" (col contorno e gli handle) pronto per farci delle operazioni, ad esempi un Delete, o... un Activate che lo rende attivo quindi pronto per scriverci.
Come per le celle del foglio di lavoro, con Select potresti selezionare anche piu' controlli, ma solo 1 puo' essere poi attivato

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi alfrimpa » 24/03/20 13:43

Si certo Anthony, e perdonami se l'ho dato per scontato, parlavo di userform.

D'altra parte le textbox su di un foglio e chi le ha mai viste? :D

Alfredo
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi Anthony47 » 25/03/20 00:03

Si certo Anthony, e perdonami se l'ho dato per scontato, parlavo di userform.
Le proprieta' dei controlli delle form sono diverse da quelle degli activex.
E, cosi' per portare iella, se cerchi textbox setfocus not working vedrai che anche sulle userform spesso fa le bizze.

D'altra parte le textbox su di un foglio e chi le ha mai viste?
Eh he, forse hai impostato
Codice: Seleziona tutto
TextBox1.Visible = False
:D

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema di SetFocus e Exit nelle Textbox (ActiveX)

Postdi alfrimpa » 25/03/20 15:18

Codice: Seleziona tutto
TextBox1.Visible = False


Spiritoso :D
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli


Torna a Applicazioni Office Windows


Topic correlati a "Problema di SetFocus e Exit nelle Textbox (ActiveX)":

problema blocco note
Autore: carlin
Forum: Software Windows
Risposte: 7

Chi c’è in linea

Visitano il forum: Nessuno e 56 ospiti