selezione prima cella visibile successiva
Hai un problema con Excel? 
selezione prima cella visibile successiva
di dlacascia 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 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 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 data: 07/12/2017 17:09:19
prova con
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Areas(2).Cells(1, 1).Select
|
di Zer0Kelvin 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 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 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
Vuoi Approfondire?