tasto invio



  • tasto invio
    di Textomb data: 02/07/2013 10:02:30

    Salve a tutti.
    dunque ho una userform che ha una sola casella textbox1 e nient'altro.
    dopo aver scritto il valore che desidero sulla textbox e do il tasto invio vorrei aggiornare il valore sul mio foglio attivo nel range("b2") e chiudere la userform.
    Per far questo ho usato l'evento keypress, ma ho riscontrato che per fargli capire che ho premuto il tasto invio devo dargli anche il tasto ctrl, altrimenti non fa nulla.
    Ecco il codice che ho usato.
    Cosa devo fare per ottenere lo scopo premendo solo il tasto "invio" e non "ctrl + invio" ?
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii.Value = 10 Then 'sarebbe il codice ascii riferito al tasto invio... Ma lo capisce solo se faccio ctrl + invio
    [b2] = [b2] + CInt(Me.TextBox1.Value)
    Unload Me
    End If
    End Sub
    



  • di totygno71 (utente non iscritto) data: 02/07/2013 12:50:39

    Ciao textomb
    prova cosi..
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = vbKeyReturn Then
            'tue istruzioni... ma mi sembra una discussione già aperta da qualcu naltro...
        End If
    End Sub
    



  • di HarryBosch data: 02/07/2013 13:01:04

    Ciao Textomb
    Utilizza l'evento KeyDown...
    -KeyDown si verifica dopo la pressione di un tasto, in generale per controllare i tasti speciali piuttosto che i caratteri (invio, frecce direzionali..).
    -KeyPress si verifica dopo keydown, sempre su pressione di un tasto, di tipo alfanumerico
    Questo dai miei appunti personali :)
    Dalla guida si può capire meglio la differenza tra i due eventi

    Il codice Ascii per il tasto invio è il 13.
    Dovresti anche gestire gli eventuali errori derivanti da inserimenti alfanumerici :)
     
    Private Sub TextBox1_KeyDown(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyAscii = 13 Then
            [b2] = [b2] + CInt(Me.TextBox1.Value)
            Unload Me
        End If
    End Sub
    



  • di Vecchio Frac data: 02/07/2013 13:55:48

    E perchè non collegare la cella del foglio alla textbox?





  • di totygno71 (utente non iscritto) data: 02/07/2013 15:14:51

    @VF
    la richiesta del caro textomb era chiara....
    Lui vuole pigiare il tasto Invio (quello grosso con la freccia verso destra) ^_^



  • di Textomb data: 02/07/2013 16:04:16

    grazie mille ragazzi.
    In effetti con l'evento KeyDown funziona tutto come si deve.
    A presto.