Intercettare evento setfocus
Hai un problema con Excel? 
di Miglio (utente non iscritto) data: 25/10/2010
Prova così
quando entri nel textbox1 diventa gialla e quando esci bianca..
mandi
Private Sub TextBox1_Enter()
TextBox11.BackColor = &HC0FFFF
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox11.BackColor = &H80000005
End Sub |
di Miglio (utente non iscritto) data: 25/10/2010
Scusami non avevo letto tutto il tuo msg, ma quello purtroppo è l'unico modo che conosco.
mandi
di Albatros54 (utente non iscritto) data: 26/10/2010
Tempo fa si era presentata una discusione simile ed abbiamo risolto con una classe, pero la classe non presenta l'evento setfocus ma bensi l'evento change.
ti posto il codice se ti puo essere di aiuto.
crea una classe e rinominala ctextbox ed incolla il codice postato.
nella useform incolla il codice initialize postato sotto, fai sapere
ciao
albatros54
> Codice della classe ctextbox <
Option Explicit
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
Dim Ctrl As MSForms.Control
For Each Ctrl In UserForm3.Controls
If TypeName(Ctrl) = "TextBox" Then
Ctrl.BackColor = &H80000005
End If
Next Ctrl
Me.txt.BackColor = 65535 '&HFFFFC0
txt.Text = UCase(txt.Text)
End Sub
> Fine codice classe <
> codice da incollare nella userform <
Option Explicit
Dim colTextBox As Collection
Dim myTxt As cTextbox
Private Sub UserForm_Initialize()
Dim ctl As MSForms.Control
If Not colTextBox Is Nothing Then
Set colTextBox = Nothing
End If
Set colTextBox = New Collection
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.TextBox Then
Set myTxt = New cTextbox
Set myTxt.txt = ctl
colTextBox.Add myTxt
End If
Next
End Sub
Private Sub UserForm_Terminate()
Set myTxt = Nothing
Set colTextBox = Nothing
End Sub
> Fine codice userform < |
di Ricky53 (utente non iscritto) data: 26/10/2010
Ciao,
nella macro di albatros poi sostituire il "change" con
"keydown" e "keyup"
come nell'esempio che ti invio.
volendo puoi utilizzare anche
"mousemove", "mousedown" e "mouseup"
ma direi che è troppo ...
ciao da ricky53
Private Sub txt_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Gestisci_Colore
End Sub
Private Sub txt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Gestisci_Colore
End Sub
Public Sub Gestisci_Colore()
Dim Ctrl As MSForms.Control
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "TextBox" Then
Ctrl.BackColor = &H80000005
End If
Next Ctrl
Me.txt.BackColor = 65535
txt.Text = UCase(txt.Text)
End Sub
|
di Ricky53 (utente non iscritto) data: 26/10/2010
Ciao,
no, hai verificato bene???
che prove hai fatto???
come ti sposti da una "textbox" all'altra???
quanto to ho inviato funziona proprio come ti occorre!
per esempio prova a spostarti con il "tab" e vedrai ...
se poi inserici anche la gestione del "mouse", come ti ho detto, vedrai che basta posizionare il mouse su una textbox e ... cambia il colore, poi con un click puoi scrivere.
prova e prova e vedrai che ne esci.
ciao da ricky53
di Ricky53 (utente non iscritto) data: 27/10/2010
Bene.
buon proseguimento ed alla prossima.
ciao da ricky53
Vuoi Approfondire?