Ho una tabella con dei dati, costituita da più righe e tre colonne. I dati nella prima colonna non sono ordinati in base al nome. Io vorrei realizzare un meccanismo che alla pressione di una lettera mi selezioni la riga che inizia con quella lettera. Il codice che ho realizzato funziona e lo posto:

codice:
Private Sub Lista_KeyPress(KeyAscii As Integer)
  Dim i As Integer
  If (KeyAscii = 13) Then
    Call ShowUser
  ElseIf (KeyAscii = 92) And (Lista.Row <> 1) Then
    Clipboard.Clear
    Clipboard.SetText Lista.TextMatrix(Lista.Row, 0)
  Else
    If (Chr(KeyAscii) <> C) Then
      C = Chr(KeyAscii)
Inizio:
      For i = 1 To Lista.Rows - 1
        If (Left(Lista.TextMatrix(i, 0), 1) = C) Then
          Lista.Row = i
          Pos = i
          Exit Sub
        End If
      Next i
    Else
      For i = Pos + 1 To Lista.Rows - 1
        If (Left(Lista.TextMatrix(i, 0), 1) = C) Then
          Lista.Row = i
          Pos = i
          Exit Sub
        End If
        If (i = Lista.Rows - 1) Then
          GoTo Inizio
        End If
      Next i
    End If
  End If
End Sub
C e Pos sono due variabili globali.

I miei problemi sono i seguenti:

1) l'attributo "Row" mi permette di selezionare solo la cella, mentre a me interesserebbe selezionare tutta la riga.

2) Questa lista contiene molte righe, quindi è inevitabile una scrollbar laterale, il problema sorge quando seleziono una riga che si trova al di sotto di quelle visibili e non riesco a spostare automaticamente la scrollbar in modo tale che essa possa essere visibile. Come posso fare?


Spero di essere stato chiaro nel presentarvi il problema e spero tanto possiate aiutarmi.

Thx

Max