Selezione automatica di zona celle facente parte di "tabella dati" che cresce quotidianamente

Anonimo
2014-10-19T12:22:03+00:00

Salve a tutti, un filtro avanzato mi trasferisce i risultati sotto una certa zona composta da un numero definito di colonne ed un numero di righe che varia in base al risultato del filtro automatico.

Dopo aver filtrato, ho la necessità di impostare alcune macro, ognuna che lancia un ordinamento di dati con logiche diverse.

Attualmente, ho creati alcuni pulsanti che lanciano le macro, queste macro però prendono in considerazione un numero di righe che è volutamente eccessivo in quanto essendo un numero fisso non posso rischiare di escludere dall'ordinamento qualche riga ...

Mi chiedevo se esiste un comando o un metodo per individuare/selezionare un determinato RANGE di celle "continue" ...

Nel mio caso attuale, la cosa potrebbe risultare leggermente più semplice in quanto abbiamo la certezza che la prima e l'ultima colonna del RANGE da individuare, avranno sempre ogni cella con un valore.

Sapreste dirmi come fare per SELEZIONARE il RANGE partendo ad esempio dalla prima cella in alto a sinistra del Range?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-10-19T15:54:42+00:00

Ciao Reggio,

un filtro avanzato mi trasferisce i risultati sotto una certa zona composta da un numero definito di colonne ed un numero di righe che varia in base al risultato del filtro automatico.

Dopo aver riletto la tua domanda, non mi è chiaro se si tratta di un filtro avanzato da solo o di un filtro automatico che viene utilizzato per filtrare i risultati prodotti da un filtro avanzato. Se quest'ultimo fosse il caso, potresti provare, invece:

'=========>>

Option Explicit

'--------->>

Public Sub Tester2()

    Dim SH As Worksheet

    Dim Rng As Range, RngOut As Range

    Set SH = ActiveSheet

    With SH

        If .AutoFilterMode Then

            Set Rng = .AutoFilter.Range

            '\ Per individuare l'intervallo:

            Set RngOut = Rng.SpecialCells(xlCellTypeVisible)

            '\ Per restituire l'indirizzo dell'intervallo

            Debug.Print RngOut.Address

            '\oppure, per selezionarlo:

            RngOut.Select

        End If

    End With

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-10-19T14:07:00+00:00

Ciao Reggio,

Come alternativa, prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim SH As Worksheet

    Dim Rng As Range, RngOut As Range

    Dim Nme As Name

    Set SH = ActiveSheet

    With SH

        Set Nme = .Parent.Names(.Name & "!Extract")

        Set Rng = .Range(Nme)

    End With

    '\ Per individuare l'intervallo:

    Set RngOut = .Range(Rng, Rng.End(xlDown))

'\ Per restituire l'indirizzo dell'intervallo

    Debug.Print RngOut.Address

    '\oppure, per selezionarlo:      

    RngOut.Select

End Sub

'<<=========

Nota, comunque, che  è raramente necessario selezionare un intervallo e di solito è più efficiente non selezionarlo.

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-10-19T12:35:52+00:00

Sapreste dirmi come fare per SELEZIONARE il RANGE partendo ad esempio dalla prima cella in alto a sinistra del Range?

Tutte le celle:

Public Sub m()

    Dim rng As Range

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("A1").CurrentRegion

rng.Select

    End With

    Set rng = Nothing

End Sub

Le celle visibili dopo il filtro:

Public Sub m()

    Dim rng As Range

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("A1").CurrentRegion

rng.SpecialCells(xlCellTypeVisible).Select

    End With

    Set rng = Nothing

End Sub

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2014-10-26T08:04:37+00:00

    <cut>

    Ciao Reggio71.

    I moderatori passati un tot di giorni dalle risposte, devono chiudere i post marcandoli come Risposta se, a loro giudizio, contengono risposte valide.

    Ovviamente l'utente rimane padrone del post e può rimuovere la Risposta.

    In questo caso sarebbe però educato e nell'interesse dell'utente, spiegare MEGLIO cosa vuole ottenere.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento