selezione prima cella visibile successiva

  • FILE ALLEGATI:
  • selezione prima cella visibile successiva (excel 2016) di dlacascia (Utente) data: 07/12/2017 09:06:53 



    a fronte di un foglio a cui è applicato un filtro, vorrei selezionare la prima cella successiva visibile. Non posso utilizzare il numero di riga successiva perchè potrebbe essere nascosta dal filtro.
    come posso fare?
    diego
  • di patel (Utente esperto) data: 07/12/2017 12:16:25 



    non è molto chiara la domanda, selezionare come ? da codice ? manualmente non puoi selezionare una cella che non vedi
  • di dlacascia (Utente) data: 07/12/2017 13:31:24 



    cerco di essere più preciso.
    Tramite codice, faccio una serie di operazioni in una tabella, alla fine vado ad applicare un filtro. La prima riga è quella dell'intestazione, ammettiamo che successive 100 righe siano nascoste dal filtro e la 102 è la prima riga visibile. Alla fine della macro il cursore si deve trovare sulla prima riga visibile perchè è da questa che dovrà partire l'operazione successiva, quindi da codice seleziono la prima riga:
    cells(1,1).select
    da qui, o faccio un ciclo tipo:

    For Each cella In Range(Cells(1, 1), Cells(Cells(1, 1).End(xlDown).Row, 1)).SpecialCells(xlCellTypeVisible)

    Cells(cella.Row, 1).Select
    If Selection.Row <> 1 Then Exit For

    Next

    oppure ci vorrebbe un qualcosa tipo selection.offset(1,0).select che però saltasse tutte le righe nascoste per trovarsi immediatamente sulla prima riga visibile (oltre a quella di intestazione)

    spero di essere stato più chiaro.
  • di patel (Utente esperto) data: 07/12/2017 17:09:19 



    prova con
     
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Areas(2).Cells(1, 1).Select
    
  • di Zer0Kelvin (Utente esperto) data: 08/12/2017 14:17:48 



    Ciao a tutti.
    Premesso che il tutto ha senso solo se si effettua la selezione da codice, una soluzione semplice sarebbe usare l'evento Selection_Change   
    Selezionando una cella non visibile, la selezione si sposta automaticamente sulla prima cella visibile.
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Target.Cells.Count = 1 Then
            If Target.EntireRow.Hidden Then Target.Offset(1, 0).Select
            If Target.EntireColumn.Hidden Then Target.Offset(0, 1).Select
        End If
    End Sub
    
  • di dlacascia (Utente) data: 11/12/2017 09:58:12 



    non sono riuscito a far funzionare la soluzione di Zer0Kelvin, la macro sembra non girare e non riesco neppure ad attivarla in debug.
    per quanto riguarda la soluzione di Patel, funzionerebbe, solo che io avrei bisogno di cercare la prima cella visibile scorrendo tra le righe, ma siccome ho anche delle colonne nascoste, la cella attiva si sposta sulla prima colonna visibile, mentre se scopro tutte le colonne nascoste, mi si posiziona correttamente sulla prima riga visibile.
    C'è modo di dare la priorità prima alle righe rispetto alle colonne?
  • di patel (Utente esperto) data: 11/12/2017 10:04:46 



    non avevi parlato di colonne nascoste, la mia soluzione utilizza le aree, prova a cambiare l'indice dell'area.
    la macro di Zer0Kelvin la devi copiare nel modulo del foglio e non in un modulo standard
  • torna su

Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.