Tasti funzione e UserForm
Hai un problema con Excel? 
Aiuto su userform
di Enzo data: 19/01/2009
Avrei bisogno di risolvere un quesito se possibile
allora ho creato una macro "pippo" che mi richiama una userform
ora attraverso l'istruzione application.onkey, {f2},"pippo" riesco ad attribuire al comando funzione "f2" la macro pippo ossia quando clicco su f2 mi fa apparire la userform
la mia domanda e' questa
se clicco su f2 quando il foglio e' attivo la macro parte ossia mi appare la userform
qualcuno sa dirmi perche non parte quando ho una userform diversa attiva e se clicco su f2 questa non parte
mi spiego meglio
attivo una userform mi si apre lo schermo della userform e se clicco su f2 non succede nulla (dovrebbe aprirsi una altra userform)
vi sarei grato se voleste darmi una mano
ps all'interno di una userform potrei creare un altro commandbutton che mi richiama la userform so come farlo ma mi piacerebbe utilizzare quello che vi ho descritto pocanzi
Userform
di Cenf (utente non iscritto) data: 19/01/2009
Ciao enzo,il tuo problema mi incuriosisce molto, considerato che faccio spesso uso delle useform.
sicuramente avrai letto anche tu la guida,per sembrerebbeche quando tu programmi un tasto (f2) questa attribuzione è valida solo per l'ambiente in cui si trova la procedura, uscito da li il tasto f2 riprende la funzione standard.
ho provato a ripetere il tuo comando ma a me addirittura non accetta il simbolo della parentesi graffa....
ripsetto alla userforno dove hai inserito il codice?
ciao emma
di Enzo (utente non iscritto) data: 19/01/2009
Il comando esatto e' quello qui sotto
ossia associa a f5 quello che e' descritto nella macro prova
ciao
Application.OnKey "{F5}", "PROVA"
|
di R (utente non iscritto) data: 20/01/2009
Se vuoi mostrare 2 userform devi impostare la proprietà showmodal a false oppure passare false a show quando lanci l'userform ... in altri termini devi far si che le userform non siano a scelta obbligatoria (il defoult)
fai sapere
saluti
r
di Enzo (utente non iscritto) data: 20/01/2009
Ciao r, ti ringrazio per la dritta ma non funziona ossia ho impostato a false showmodal per quanto rigurada le due userform ma funziona parzialmente.
mi spiego meglio
se lancio la userform1 (all'interno dell'evento activate ho inserito application.onkey etc) e poi clicco su f5 per far apparire la userform2 questa non si evidenzia
se pero' clicco su una cella del foglio e poi clicco su f5 la userform viene fuori (ossia si accavallano le userform)
a me non serve questo
hai altri consigli
di Ricky53 data: 20/01/2009
Ciao enzo,
io entrerei nei meriti del problema chiedendomi e chiedendoti:
è proprio necessario ricorrere ad un tasto funzionale quando si sta lavorando su una "userform"?
i tasti funzionali sono utili e comodi quando si lavoro su un foglio ma ritengo che non siano proprio il massimo se è attiva una userform.
per me sono più funzionali le caselle di opzione, i pulsanti di opzione, i pulsanti di comando.
fai sapere qualcosa in merito.
ciao da ricky53
di R (utente non iscritto) data: 20/01/2009
Sono pienamente daccordo con ricky, il focus dell'utente è già difficile da controllare, quindi anche io suggerirei un pulsante che richiama l'altra userform, o meglio ancora un controllo multischeda
saluti
r
di Enzo (utente non iscritto) data: 20/01/2009
Grszie inizialmente per l'intervento di r e ricky
so come posso ovviare al richiamo di userform tramite comandi diversi
la mia era una curiosita' se si potesse fare o meno.
di R (utente non iscritto) data: 20/01/2009
Ciao enzo
il problema è che onkey è un metodo di application, quando la userform prende il focus l'oggetto in primo piano è la userform, potresti volendo utilizzare l'evento keypress ma non col tasto f2 ... potresti per es. utilizzare una combinazione di tasti ctrl+q ... con l'evento keypress puoi controllare che tasti vengono premuti quando la userform ha il focus e in seguito lanciare l'altra userform
saluti
r
di Enzo (utente non iscritto) data: 20/01/2009
Grazie r per la risposta
non potresti allegarmi un file banale con un esempio con due userform senza contenuto senza nulla
di R (utente non iscritto) data: 21/01/2009
Non è necessario un file di esempio, crea due userform e prova il codice qui sotto, poi se hai bisogno ... siamo qui
saluti
r
'nel modulo di classe di userform1
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'alla pressione di Ctrl+F viene richiamata userform2
If KeyAscii.Value = 6 Then
Me.Hide
UserForm2.Show
End If
End Sub
'nel modulo di classe di userform2
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'alla pressione di Ctrl+F viene richiamata userform1
If KeyAscii.Value = 6 Then
Me.Hide
UserForm1.Show
End If
End Sub
|
di Enzo (utente non iscritto) data: 21/01/2009
Grazie r
solo una curiosita'
presumo che il premere ctrl f per passare ad una userform sia gestito da keyascii.value = 6
potresti spiegarmi come fa a convertirlo in quel valore
ossia io ho un foglio excel con tutti i caratteri ascii gestiti da vba ma non riesco a capire come fa a passare il comando vba a ctrl f
di R (utente non iscritto) data: 21/01/2009
Keypress riconosce ctrl (vedi la guida in linea) i primi ascii sono inutilizzati quindi vengono usati per riconoscere la combinazione dei tasti ctrl + lettera con la logica dell'ordine degli ascii ... ovvero ctrl+a =1 ... ctrl+b =2 etc ...
aggiungi una label su un userform e il codice qui sotto e prova
saluti
r
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'alla pressione di Ctrl+F viene richiamata userform2
Me.Label1.Caption = KeyAscii.Value
End Sub
|
di Enzo (utente non iscritto) data: 21/01/2009
Grazie non si finisce mai di imparare
Vuoi Approfondire?