Excel Nascondi righe con celle vuote

Anonimo
2024-04-12T17:17:38+00:00

Salve.

In un Foglio ho righe da A13:A20 che vorrei nascondere se le cella da A13 a A20 sono vuote e scoprirle se contengono un valore. Però il mio problema è che non mi deve nascondere le righe vuote immediatamente sotta quella non vuota, altrimenti non posso inserire un valore alla cella successiva.

Deve nascondermi cioè le righe le cui celle da A13 a A20 sono vuote ma a partire dalla seconda vuota. Cioè se in A13:A20 solo la A13 non è vuota voglio nascondere dalla A15 alla A20 e così via. Deve cioè nascondere e scoprire le righe meno la prima.

Spero di essere stato capace di farmi capire.

Grazie molte a chi vorrà aiutarmi.

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

Anonimo
2024-04-13T07:24:30+00:00

La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

Carissimo, GiuseppeXG

Naturalmente,! Sono contento che funzioni, se hai bisogno di automatizzare questo processo e hai bisogno di un altro metodo, inserisci questo codice direttamente nel tuo foglio di calcolo. Come mostra l'immagine:

Immagine

New Code here:

Private Sub Worksheet_Change(ByVal Target As Range)

    ' Define the range where changes are monitored

    Dim WatchRange As Range

    Dim IntersectRange As Range

    Set WatchRange = Me.Range("A13:A20")

    Set IntersectRange = Intersect(Target, WatchRange)

    ' Check if the changed cell is within the range of interest

    If Not IntersectRange Is Nothing Then

        Call HideEmptyRows

    End If

End Sub

Sub HideEmptyRows()

    Dim rng As Range

    Dim cell As Range

    Dim firstEmptyFound As Boolean

    Set rng = Me.Range("A13:A20") ' Define your range

    Application.EnableEvents = False ' Disable events to prevent endless loops

    firstEmptyFound = False ' Flag to keep track of the first empty cell

    For Each cell In rng

        If Len(cell.Value) = 0 Then ' If the cell is empty

            If firstEmptyFound Then

                cell.EntireRow.Hidden = True ' Hide the row if it's not the first empty cell

            Else

                firstEmptyFound = True ' Mark the first empty cell found

                cell.EntireRow.Hidden = False ' Ensure the row with the first empty cell is not hidden

            End If

        Else

            cell.EntireRow.Hidden = False ' Unhide the row if the cell is not empty

        End If

    Next cell

    Application.EnableEvents = True ' Re-enable events after the updates

End Sub    

Questo script modifica l'evento Worksheet_Change per chiamare HideEmptyRows quando si verifica una modifica in una delle celle comprese tra A13 e A20. Il comando Application.EnableEvents = False disabilita temporaneamente la gestione degli eventi per evitare potenziali cicli infiniti quando si modifica il contenuto delle celle a livello di codice da VBA (ad esempio, nascondere/visualizzare le righe).

Chiudi l'editor VBA e torna a Excel. Guarda le immagini (poiché viene fatto automaticamente, puoi vedere solo i risultati dello screenshot):

La risposta è stata utile?

0 commenti Nessun commento
  1. Anonimo
    2024-04-13T09:23:07+00:00

    Dear Icelynn,

    Thank you very much for you attention and for having solved my problem.
    The Code works very well, as I wanted.

    Thank you also for the step by step code explanations .

    Have a nice weekend.

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2024-04-13T06:16:49+00:00

    Grazie Icelynn della risposta.

    Ho provato il codice e funziona. Devo richiamarla però ogni volta.

    Preferirei che il codice venisse eseguito automaticamente alla modifica del contenuto di una delle celle A13:A20 .

    "È anche possibile automatizzare questo processo richiamando la HideEmptyRows subroutine da altre subroutine VBA per la gestione degli eventi (come Worksheet_Change) in modo che venga eseguita automaticamente quando vengono apportate modifiche al foglio, ma fai attenzione perché ciò a volte può portare a comportamenti imprevisti se non implementati con attenzione."

    Puoi suggerirmi per favore come modificare il codice per la sua esecuzione automatica?

    Grazie.

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-04-12T20:59:36+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao, GiuseppeXG

    Benvenuto nella community Microsoft.

    La tua richiesta è piuttosto specifica e comporta l'occultamento condizionale della riga in Excel, che non è direttamente supportato tramite formule standard o formattazione condizionale. Tuttavia, è possibile ottenere questo risultato utilizzando una macro VBA (Visual Basic for Applications).

    Ciò nasconderà automaticamente le righe nell'intervallo A13:A20 in base al fatto che le celle in quell'intervallo siano vuote, ma lascerà sempre la prima cella vuota non nascosta per consentire un facile inserimento dei dati. Si tratta di un approccio ponderato alla gestione dei dati in Excel.

    Puoi ottenere questo risultato con una procedura VBA che dovrai inserire nel modulo di codice del foglio. Questo script scorrerà l'intervallo specificato, controllerà il contenuto di ogni cella e nasconderà o mostrerà le righe di conseguenza.

    Ecco come puoi farlo:

    1. Aprire la cartella di lavoro di Excel.
    2. Premere ALT + F11 per aprire l'editor di Visual Basic, Applications Edition (VBA).
    3. Nella finestra Esplora progetti individuare la cartella di lavoro e il foglio di lavoro che si sta utilizzando. Se Esplora progetti non viene visualizzato, premere CTRL + R per aprirlo.
    4. Fai clic con il pulsante destro del mouse sul nome del foglio in cui si trovano i dati (ad esempio, Foglio1) e seleziona Inserisci > modulo. Questo passaggio crea un nuovo modulo.
    5. Nel modulo appena creato, incolla il seguente codice VBA: Sub HideEmptyRows()
       Dim ws As Worksheet
      
       Dim rng As Range
      
       Dim cell As Range
      
       Dim firstEmptyFound As Boolean
      
       Set ws = ThisWorkbook.Sheets("Sheet1") 'Change "Sheet1" to the name of your sheet
      
       Set rng = ws.Range("A13:A20") 'Define your range
      
       firstEmptyFound = False 'Flag to keep track of the first empty cell
      
       For Each cell In rng
      
           If Len(cell.Value) = 0 Then 'If the cell is empty
      
               If firstEmptyFound Then
      
                   cell.EntireRow.Hidden = True 'Hide the row if it's not the first empty cell
      
               Else
      
                   firstEmptyFound = True 'Mark the first empty cell found
      
                   cell.EntireRow.Hidden = False 'Ensure the row with the first empty cell is not hidden
      
               End If
      
           Else
      
               cell.EntireRow.Hidden = False 'Unhide the row if the cell is not empty
      
           End If
      
       Next cell
      
      End Sub
    6. Modificare lo script in base alle esigenze, ad esempio cambiare "Foglio1" con il nome effettivo del foglio.
    7. Per eseguire lo script, premere nell'editor VBA con la subroutine selezionata oppure tornare F5 a Excel, premere Alt + F8, selezionare HideEmptyRowse fare clic su Run.HideEmptyRows

    Questo script nasconderà tutte le righe vuote a partire dalla seconda cella vuota consecutiva all'interno dell'intervallo A13:A20. Ecco il risultato:

    • Prima:
      Immagine
    • Dopo: Immagine

    È anche possibile automatizzare questo processo richiamando la HideEmptyRows subroutine da altre subroutine VBA per la gestione degli eventi (come Worksheet_Change) in modo che venga eseguita automaticamente quando vengono apportate modifiche al foglio, ma fai attenzione perché ciò a volte può portare a comportamenti imprevisti se non implementati con attenzione.

    Assegna macro a un pulsante (facoltativo): se desideri eseguire facilmente questa macro senza dover aprire ogni volta l'editor VBA, puoi assegnarla a un pulsante nel tuo foglio Excel.

    • Torna al tuo foglio Excel.
    • Vai a Inserisci > forme e scegli una forma che funga da pulsante.

    [rget="_blank">![](https://learn-attachment.microsoft.com/api/attachments/813f8dac-4888-42a4-98d9-ed08147949a5?platform=QnA"https://learn-attachment.microsoft.com/api/attachments/813f8dac-4888-42a4-98d9-ed08147949a5?platform=QnA" rel="ugc nofollow">https://learn-attachment.microsoft.com/api/attachments/813f8dac-4888-42a4-98d9-ed08147949a5?platform=QnA"https://learn-attachment.microsoft.com/api/attachments/147a908c-51b9-4908-9c3f-88dc8661b702?platform=QnA" title="filestore.community.support.microsoft.com" rel="ugc nofollow">

  4. Fammi sapere se hai bisogno di ulteriore aiuto con questo!

    Icelynn |Specialista del supporto della community Microsoft

La risposta è stata utile?

0 commenti Nessun commento