Risultati da 1 a 17 di 17

Discussione: Nascondere zona esterna alla selezione



  1. #1
    L'avatar di zio_tom
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Veneto
    Messaggi
    526
    Versione Office
    2010 - Win10
    Likes ricevuti
    64
    Likes dati
    17

    Cool Nascondere zona esterna alla selezione

    Questa Sub permette partendo da una zona selezionata sul foglio
    di nascondere Tutta la parte complementare (esterna) alla selezione

    Codice: 
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione
       Dim prRig As Long, prCol As Long, ulRig As Long, ulCol As Long
       
       prRig = Selection.Row
       prCol = Selection.Column
       ulRig = Selection.Rows(Selection.Rows.Count).Row
       ulCol = Selection.Columns(Selection.Columns.Count).Column
       
       If prRig > 1 Then
          Rows("1:" & (prRig - 1)).Select
          Selection.EntireRow.Hidden = True
       End If
       If prCol > 1 Then
          Columns("A:" & LettCol(prCol - 1)).Select
          Selection.EntireColumn.Hidden = True
       End If
       
       Columns(ulCol + 1).Select
       Range(Selection, Selection.End(xlToRight)).Select
       Selection.EntireColumn.Hidden = True
       
       Rows(ulRig + 1).Select
       Range(Selection, Selection.End(xlDown)).Select
       Selection.EntireRow.Hidden = True
       
     End Sub
    
    Public Function LettCol(n As Long) As String
    'trasformo la coordinata Colonna da Numerica a Letterale
        LettCol = Replace(Cells(1, n).Address(False, False), "1", "")
    End Function

  2. I seguenti utenti hanno dato un "Like"


  3. #2
    L'avatar di Alessandro
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Roma
    Età
    45
    Messaggi
    851
    Versione Office
    2010 64 bit
    Likes ricevuti
    113
    Likes dati
    61
    bella complimenti...ne ho anche io una simile ma molto più maccheronica: nel senso che è specifica per alcuni lavori e non così performante...
    io se può tornar utile inserisco anche queste tre righe

    ActiveWindow.DisplayGridlines = False
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayWorkbookTabs = False

    penso che rendano il lavoro ancora più completo...
    cmq complimenti davvero.
    ciao
    ale

  4. #3
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Ciao Alessandro scusami se rispondo solo ora , ma lo solo vito Adesso.
    Però la mia domanda e questa : Ma il tuo codice e da inserire in un Modulo ThisWorkBook, Oppure all'interno di un Modulo 1 ,2 ecc...!
    Scusami ma non lo capisco , Grazie e Saluti da A.Maurizio

  5. #4
    L'avatar di Alessandro
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Roma
    Età
    45
    Messaggi
    851
    Versione Office
    2010 64 bit
    Likes ricevuti
    113
    Likes dati
    61
    ciao maurizio,
    le mie tre righe le avevo intese solo come conclusione del modulo di zio tom, quindi prima della sub.
    tipo così
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione
    Dim prRig As Long, prCol As Long, ulRig As Long, ulCol As Long

    prRig = Selection.Row
    prCol = Selection.Column
    ulRig = Selection.Rows(Selection.Rows.Count).Row
    ulCol = Selection.Columns(Selection.Columns.Count).Column

    If prRig > 1 Then
    Rows("1:" & (prRig - 1)).Select
    Selection.EntireRow.Hidden = True
    End If
    If prCol > 1 Then
    Columns("A:" & LettCol(prCol - 1)).Select
    Selection.EntireColumn.Hidden = True
    End If

    Columns(ulCol + 1).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.EntireColumn.Hidden = True

    Rows(ulRig + 1).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.EntireRow.Hidden = True

    ActiveWindow.DisplayGridlines = False
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayWorkbookTabs = False

    End Sub

    ciao
    ale

  6. #5
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Grazie Alessandro della precisazione ; Ho chiesto questo in quanto li per li li ! Inizialmente mi sembravano sembravano molto quei Tre/Quattro codici che Avevo Letto in un Libro di Excel e il Suo VBA.
    Che Servono per Togliere le barre degli Indireizzi ; I cosi detti Ascensori; ecc...! Del foglio di Excel .
    Tutto qui ora leggendo il resto dei codicim iè tutto molto più chiaro.
    Crazie infinite Saluti anche a te da A.Maurizio

  7. #6

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da zio_tom Visualizza Messaggio
    Questa Sub permette partendo da una zona selezionata sul foglio
    di nascondere Tutta la parte complementare (esterna) alla selezione
    Mi sono permesso di dare una "ripulita" al codice eliminando quegli inutili quanto inefficienti .Select ....

    Codice: 
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione
      Dim prRig As Long, prCol As Long, ulRig As Long, ulCol As Long
      
      prRig = Selection.Row
      prCol = Selection.Column
      ulRig = Selection.Rows(Selection.Rows.Count).Row
      ulCol = Selection.Columns(Selection.Columns.Count).Column
      
      If prRig > 1 Then
        Rows("1:" & (prRig - 1)).EntireRow.Hidden = True
      End If
      If prCol > 1 Then
        Columns("A:" & LettCol(prCol - 1)).EntireColumn.Hidden = True
      End If
      
      With Columns(ulCol + 1)
        Range(.Cells, .Cells.End(xlToRight)).EntireColumn.Hidden = True
      End With
      
      With Rows(ulRig + 1)
        Range(.Cells, .Cells.End(xlDown)).EntireRow.Hidden = True
      End With
      
    End Sub

    Edit: non avevo esaminato attentamente il codice (e me ne scuso), perché il mio intento era mostrare come evitare i Select, ma il codice si comporta in modo impreciso in situazioni simili a quella illustrata (avendo selezionato le celle C5:E7) :

    A
    B
    C
    D
    E
    F
    G
    1
    45
    2
    3
    4
    5
    a b a
    6
    2
    3
    4
    7
    a b a
    8
    9
    10
    11
    12
    125


    Questo a causa dell'utilizzo delle istruzioni End(xlToRight) e End(xlDown) .
    Altro buon motivo per ricorrere alle proprietà Rows.Count e Columns.Count.
    Ultima modifica fatta da:scossa; 27/11/15 alle 19:10 Motivo: Precisazione
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  8. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3224
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Salve a tutti

    Per ovviare all'inconveniente sollevato da scossa (che saluto) si potrebbe utilizzare la seguente macro che nasconde gli esterni ma partendo dalla cella A1 (visto che, normalmente, si comincia da sinistra verso destra e dall'alto in basso.
    Codice: 
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione partendo da A1
    Dim uRg As Long, uCn As Long
        
        uRg = Cells.Find("*", Cells(1, 1), , , xlByRows, xlPrevious).Row
        uCn = Cells.Find("*", Cells(1, 1), , , xlByColumns, xlPrevious).Column
        Range(Cells(1, 1), Cells(uRg, uCn)).Select
        With Columns(uCn + 1)
            Range(.Cells, .Cells.End(xlToRight)).EntireColumn.Hidden = True
        End With
        With Rows(uRg + 1)
            Range(.Cells, .Cells.End(xlDown)).EntireRow.Hidden = True
        End With
        Cells(1, 1).Select
    End Sub
    Si potrebbe anche evitare di selezionare l'intervallo.

    Vorrei un vostro parere. Grazie.

    Mi piacerebbe anche sapere (io non lo conosco) se c'è un metodo per ripristinare il foglio originale, cioè facendo "riemergere" la parte nascosta.

    Ciao,
    Mario

  9. #8
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    823
    Versione Office
    2016 64bit
    Likes ricevuti
    150
    Likes dati
    55
    Ciao Marius44, nel tuo caso potrebbero bastare queste poche righe di codice per rendere visibile quanto hai nascosto.
    Codice: 
    Option Explicit
    
    Sub ScopriEsterno()
        
        Cells.Select
        Selection.EntireRow.Hidden = False
        Selection.EntireColumn.Hidden = False
        Range("A1").Select
    
    End Sub

  10. #9
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3224
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Grazie Rollis13. A buon rendere.

    Ciao,
    Mario

  11. #10

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Altro buon motivo per ricorrere alle proprietà Rows.Count e Columns.Count.
    Ecco una soluzione usando le proprietà citate:

    Codice: 
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione
      Dim prRig As Long, prCol As Long
      Dim ulRig As Long, ulCol As Long
      Dim ulRigSel As Long, ulColSel As Long
      
      prRig = Selection.Row
      prCol = Selection.Column
      ulRigSel = Selection.Rows(Selection.Rows.Count).Row + 1
      ulColSel = Selection.Columns(Selection.Columns.Count).Column + 1
      ulRig = Rows.Count
      ulCol = Columns.Count
      
      If prRig > 1 Then
        Rows("1:" & (prRig - 1)).EntireRow.Hidden = True
      End If
      
      If prCol > 1 Then
        Columns("A:" & LettCol(prCol - 1)).EntireColumn.Hidden = True
      End If
      
        Range(Columns(ulColSel), Columns(ulCol)).EntireColumn.Hidden = True
        Range(Rows(ulRigSel), Rows(ulRig)).EntireRow.Hidden = True
      
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  12. #11

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Ciao Marius44, nel tuo caso potrebbero bastare queste poche righe di codice per rendere visibile quanto hai nascosto.
    Codice: 
    ....
        Cells.Select
        Selection.EntireRow.Hidden = False
        Selection.EntireColumn.Hidden = False
    ....
    Ciao,

    usare il metodo Select è quasi sempre inutile e inefficacie:

    Codice: 
    Sub Riquadro()
      ActiveSheet.Cells.EntireRow.Hidden = False
      ActiveSheet.Cells.EntireColumn.Hidden = False
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  13. #12
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ecco una soluzione usando le proprietà citate:

    Codice: 
    Public Sub nascondiEsterno()
    'nasconde zona esterna alla selezione
      Dim prRig As Long, prCol As Long
      Dim ulRig As Long, ulCol As Long
      Dim ulRigSel As Long, ulColSel As Long
      
      prRig = Selection.Row
      prCol = Selection.Column
      ulRigSel = Selection.Rows(Selection.Rows.Count).Row + 1
      ulColSel = Selection.Columns(Selection.Columns.Count).Column + 1
      ulRig = Rows.Count
      ulCol = Columns.Count
      
      If prRig > 1 Then
        Rows("1:" & (prRig - 1)).EntireRow.Hidden = True
      End If
      
      If prCol > 1 Then
        Columns("A:" & LettCol(prCol - 1)).EntireColumn.Hidden = True
      End If
      
        Range(Columns(ulColSel), Columns(ulCol)).EntireColumn.Hidden = True
        Range(Rows(ulRigSel), Rows(ulRig)).EntireRow.Hidden = True
      
    End Sub
    ciao Scossa,
    sbaglio, o manca la definizione di "LettCol"?
    o è un comando che non conosco?

    azzardo una modifica:


    Codice: 
    Let lettprcol = (prCol - 1)
    Codice: 
    If prCol > 1 Then
        Columns("A:" & lettprcol).EntireColumn.Hidden = True
    End If
    :70:

    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  14. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da tanimon Visualizza Messaggio
    sbaglio, o manca la definizione di "LettCol"?
    No, è una UDF (credo di paternità del mitico Roberto Mensa alias r) che è riportata nel codice del post iniziale di questa discussione.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  15. #14

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Codice: 
    Sub Riquadro()
      ActiveSheet.Cells.EntireRow.Hidden = False
      ActiveSheet.Cells.EntireColumn.Hidden = False
    End Sub
    Che, ovviamente, si può ridurre a:

    Codice: 
    Sub Riquadro()
      ActiveSheet.Rows.Hidden = False
      ActiveSheet.Columns.Hidden = False
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  16. #15
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4
    ciao Scossa,
    senza UDF, dovrebbero andare bene le modifiche che ho proposto #12.

    Che ne dici?

    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  17. #16

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da tanimon Visualizza Messaggio
    ciao Scossa,
    senza UDF, dovrebbero andare bene le modifiche che ho proposto #12.
    Non direi: lettprcol è un numero (risultato di una sottrazione), quindi Columns("A:" & lettprcol) sarebbe qualcosa come Columns("A:6")
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  18. #17
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4
    non cambia mai....:127:


    e come al solito........

    :23::23::23:



    Frank
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

Discussioni Simili

  1. Macro per scrivere in una zona sempre maiuscolo
    Di keope68 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 16/02/17, 13:16
  2. inserimento in automatico della via e relativa zona di appartenenza
    Di ClaudioPrimo nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 22/11/16, 13:39
  3. Modificare valore celle in base ad una condizione esterna ad esse
    Di ciaociauciao nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 16/08/16, 18:26
  4. Risposte: 0
    Ultimo Messaggio: 12/03/16, 22:11
  5. nascondere formule
    Di cesare nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 06/10/15, 23:24

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •