Condividi tramite

Nascondi RIGA/COLONNA

Anonimo
2017-08-05T13:41:16+00:00

Salve,

Ho un problema per il quale chiedo che qualcuno possa gentilmente aiutarmi

Nel Foglio1 se nella cella A5 il valore è nullo ("") vorrei venisse nascosta l'intera RIGA 5, viceversa se il valore è non nullo la RIGA si dovrebbe scoprire.

Nello stesso Foglio1 sella nella cella C8 il valore è nullo ("") vorrei venisse nascosta l'intera COLONNA C, viceversa se il valore ritorna non nullo la colonna si dovrebbe scoprire.8 

Il valore Nullo della cella è dato da una formula che facendo riferimento al contenuto di altre celle attribuisce alla cella  A5 o C8 un valore oppure "".

Spero di essermi riuscito a spiegare.

Grazie,

Giuseppe

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

  1. Anonimo
    2017-08-07T11:36:50+00:00

    Ciao Giuseppe,

    Grazie tante del tuo aiuto. Funziona perfettamente.

    Bene!

    Solo un'ultima cosa: Come posso modificare il codice se volessi nascondere solo la RIGA oppure solo la COLONNA? Cioè avere due codici separati, uno per nascondere la riga e uno per nascondere la colonna.

    Per nascondere solo righe, prova qualcosa del genere:

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

    Option Explicit

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

    Private Sub Worksheet_Calculate()

        Dim Rng As Range

        Dim rCell As Range

        Const sCelle As String = "A10:A14"                                '<<=== Modifica

        On Error GoTo XIT

        Application.EnableEvents = False

        Set Rng = Me.Range(sCelle)

          For Each rCell In Rng.Cells

                With rCell

                    .EntireRow.Hidden = .Value = vbNullString

                End With

            Next rCell

    XIT:

        Application.EnableEvents = True

    End Sub

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

    Per nascondere solo colonne, prova qualcosa del genere:

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

    Option Explicit

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

    Private Sub Worksheet_Calculate()

        Dim Rng As Range

        Dim rCell As Range

        Const sCelle As String = "B5:I5"                                '<<=== Modifica

        On Error GoTo XIT

        Application.EnableEvents = False

        Set Rng = Me.Range(sCelle)

          For Each rCell In Rng.Cells

                With rCell

                    .EntireColumn.Hidden = .Value = vbNullString

                End With

            Next rCell

    XIT:

        Application.EnableEvents = True

    End Sub

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

    Potresti scaricare il mio file di prova Giuseppe20170807.xlsm

    In questo file dimostro il primo codice nel foglio Nasconda Righe e il secondo codice nel foglio Nasconda Colonne.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2017-08-06T11:10:24+00:00

    Ciao Giuseppe,

    Ho un problema per il quale chiedo che qualcuno possa gentilmente aiutarmi

    Nel Foglio1 se nella cella A5 il valore è nullo ("") vorrei venisse nascosta l'intera RIGA 5, viceversa se il valore è non nullo la RIGA si dovrebbe scoprire.

    Nello stesso Foglio1 sella nella cella C8 il valore è nullo ("") vorrei venisse nascosta l'intera COLONNA C, viceversa se il valore ritorna non nullo la colonna si dovrebbe scoprire.8 

    Il valore Nullo della cella è dato da una formula che facendo riferimento al contenuto di altre celle attribuisce alla cella  A5 o C8 un valore oppure "".

    Prova qualcosa del genere:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

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

    Option Explicit

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

    Private Sub Worksheet_Calculate()

        Dim Rng As Range, Rng2 As Range

        Dim RngRiga As Range, RngColonna As Range

        Const sRowCella As String = "A5"                    '<<=== Modifica

        Const sCellaColonna As String = "C8"             '<<=== Modifica

        On Error GoTo XIT

        Application.EnableEvents = False

        With Me

            Set RngRiga = .Range(sRowCella)

            Set RngColonna = .Range(sCellaColonna)

        End With

        With RngRiga

            RngRiga.EntireRow.Hidden = .Value = vbNullString

        End With

        With RngColonna

            .EntireColumn.Hidden = .Value = vbNullString

        End With

    XIT:

        Application.EnableEvents = True

    End Sub

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

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2017-08-07T17:55:02+00:00

    Ciao Giuseppe,

    Scusami Norman,

    Avrei necessità di una variante all'ultima versione codici Nascondi RIGA e nascondi COLONNA:

    Nell'intervallo A10:A20 se la cella A10 è vuota dovrebbe nascondere le RIGHE da A11 a A20, se A11 è vuota dovrebbe nascondere le RIGHE da A12 a A20, se A20 è vuota non nasconde nessuna RIGA.

    La stessa cosa per le COLONNE: nell'intervallo A1:G1 se A1 è nulla nascondere la da B1 a G1 e così via.

    Mi dispiace importunarti ancora ma  usando e provando il codice è venuta fuori questa altra variante.

    Mi pare  che la domanda diventi sempre più complessa e più convoluta 

    Nel modulo di codice del foglio Nascondi Riga, sostituisci il codice con la seguente versione:

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

    Option Explicit

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

    Private Sub Worksheet_Calculate()

        Dim Rng As Range

        Dim i As Long

        Const sCelle As String = "A10:A14"                               '<<=== Modifica

        On Error GoTo XIT

        With Application

            .EnableEvents = False

            .ScreenUpdating = False

        End With

        Set Rng = Me.Range(sCelle)

        With Rng

            .EntireRow.Hidden = False

            For i = 1 To Rng.Cells.Count - 1

                If .Cells(i) = vbNullString Then

                    .Offset(i).Resize(.Rows.Count - i).EntireRow.Hidden = True

                    GoTo XIT

                End If

            Next i

        End With

    XIT:

        With Application

            .EnableEvents = True

            .ScreenUpdating = True

        End With

    End Sub

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

    Per il foglio Nascondi Colonne, sostituisci il codice con la seguente versione:

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

    Option Explicit

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

    Private Sub Worksheet_Calculate()

        Dim Rng As Range

        Dim i As Long

        Const sCelle As String = "B5:I5"                                '<<=== Modifica

        On Error GoTo XIT

        With Application

            .EnableEvents = False

            .ScreenUpdating = False

        End With

        Set Rng = Me.Range(sCelle)

        With Rng

            .EntireColumn.Hidden = False

            For i = 1 To Rng.Cells.Count

                If .Cells(i) = vbNullString Then

                    .Offset(1, i).Resize(1, .Columns.Count - i).EntireColumn.Hidden = True

                    GoTo XIT

                End If

            Next i

        End With

    XIT:

        Application.EnableEvents = True

    End Sub

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

    Potresti scaricare il mio nuovo file di prova Giuseppe#3_20170807.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-08-06T17:58:09+00:00

    Ciao Giuseppe,

    Forse sbaglio qualcosa ma non mi funziona.

    Credo il problema sia il rsultato del modo in cui tu abbia copiato il codice nel tuo file.  Più in particolare, penso che il codice di codice includa istanze del carattere spaziale nascosto Ascii 160.

    Quindi:

    Nel modulo di codice del foglio interessato:

    Seleziona tutto il codice

    Menu | scheda Modifica

    Sostituisci

    Nella casella Trova, con il tasto Alt premuto, digita 0160 sulla tastiera numerica

    Nella casella Sostituisci cancella l'eventuale contento per lasciarlo vuoto

    Fai clic sul pulsante Sostituisci tutti

    Se quest'operazione avrà successo, il codice rosso diventerà nero come quello del mio file di prova

     Potresti scaricare il mio file di prova Giuseppe20170806.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-08-06T13:15:39+00:00

    Grazie Norman. Gentile come sempre.

    Forse sbaglio qualcosa ma non mi funziona.

    Ti allego immagine.

    Grazie,

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento