Tasti funzione e UserForm



  • 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