ScrollArea



  • ScrollArea
    di Frapao data: 20/12/2014 18:30:48

    Auguri e buone Feste a tutto il Forum,
    ho un problemino da risolvere non so se è fattibile, cioè in un database (Foglio1) dovrei impostare con 2 sub routine, una per incrementare e l'altra sub per scalare lo scroll area del foglio che parte dal range A4 al range R1048576. Esempio: se inserisco una riga dopo l'altra fino al range A27 lo scroll area deve essere impostato, dal Range A4 al range R27. Quando inserisco un'altra riga lo scroll area deve essere impostato dal Range A4 al range R28, e così via man mano che inserisco le nuove righe...Mentre quando elimino una riga lo scroll area deve essere impostato per scalare di una riga. Es. se prima lo scroll area era impostato dal range A4 al range R27 eliminando una riga lo scroll area deve scalare dal range A4 al range R26 e così via...Purtroppo dal codice che ho allegato sono riuscito con una condizione if a impostare lo scroll fino al range a4:r27 ma dopo mi toccava fare altre condizioni if per andare avanti, alla fine mi sarei ritrovato fino al prossimo Natale a scrivere condizioni if....Potete aiutarmi a risolvere con la vostra esperienza questo problema? Grazie....
     
    Sub AreaScroll()
    If Range("A27").Value = "" Then 'se nella cella a27 non si scrive nulla
    ActiveSheet.ScrollArea = "A4:R27" 'imposto questo scroll area
    Else 
    if  Range("A28").Value = "" Then
    ActiveSheet.ScrollArea = "A4:R28"
    End If
    End If
    End Sub
    



  • di lepat (utente non iscritto) data: 20/12/2014 18:47:01

    assegna un nome al range e fai riferimento al nome avendo cura di inserire le righe sempre all'interno del range, mai alla fine


  • ScrollArea
    di Frapao (utente non iscritto) data: 20/12/2014 19:33:14

    Mi puoi fare un esempio? Grazie



  • di lepat (utente non iscritto) data: 20/12/2014 20:32:57

    assegni il nome pippo al range A4:R27
     
    Sub AreaScroll()
    ActiveSheet.ScrollArea = Range("pippo").Address 'imposto questo scroll area
    End Sub


  • ScrollArea
    di Frapao data: 20/12/2014 21:47:57

    Scusa, ma quando creo una riga al range a28:r28 lo scroll area si mantiene sempre fino al range a4:r27, come avevo scritto all'apertura della discussione con 2 sub volevo fare che per ogni riga che aggiungo dopo il range a27 con un controllo far si che si incrementi di 1 lo scroll area, esempio se lo scrollarea attualmente è impostato al range A4:R27; aggiungo una riga dopo il range A27 lo scrollarea deve impostarsi al range A4:R28, aggiungo un'altra riga, lo scrollarea deve impostarsi al range A4:R29 . Con la seconda sub invece deve fare il contrario cioè quando elimino una riga lo scrollarea si imposta da range A4:R29 a range A4:R28, praticamente il database deve scrollare fino all'ultima riga inserita.... spero di essere stato chiaro. Grazie lepat...



  • di lepat (utente non iscritto) data: 21/12/2014 07:55:09

    hai tenuto conto di quanto ho detto prima ?
    assegna un nome al range e fai riferimento al nome avendo cura di inserire le righe sempre all'interno del range, mai alla fine



  • di Mister_x (utente non iscritto) data: 21/12/2014 09:15:42

    ciao

    Buone Feste

    ciao

     
    Sub AreaScroll()
    Dim Nriga As Long
    Nriga = UsedRange.Row + UsedRange.Rows.Count + 1
      ActiveSheet.ScrollArea = "A4:R" & Nriga 'imposto questo scroll area
    End Sub
    





  • ScrollArea
    di Frapao (utente non iscritto) data: 21/12/2014 10:18:53

    Ciao Mister_x, ho provato il tuo codice esce l'errore di variabile non definita UsedRange...



  • di lepat (utente non iscritto) data: 21/12/2014 11:27:51

    Mister_x è stato troppo frettoloso
     
    Sub AreaScroll()
    Dim Nriga As Long
    Nriga = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count + 1
      ActiveSheet.ScrollArea = "A4:R" & Nriga 'imposto questo scroll area
    End Sub


  • Inserimento valori
    di Frapao (utente non iscritto) data: 21/12/2014 11:54:14

    Grazie a Lepat e Mister_x ho risolto. Auguro buone feste a voi e a tutto il forum....



  • di Mister_x (utente non iscritto) data: 21/12/2014 16:24:49

    ciao Lepad

    non e' che sono stato troppo frettoloso
    la prima cosa che mi e' venuta in mente era che questa sub() servisse ad un solo foglio e non a tutti i fogli, in quanto non ho pensato che tutti i fogli abbiano bisogno di fermare lo scrool ad una determinata riga
    comunque riassumendo per chi ne avesse bisogno

    ciao


     
    Da inserire nel singolo foglio
    Sub AreaScroll()
    Dim Nriga As Long
    Nriga = UsedRange.Row + UsedRange.Rows.Count + 1
      ActiveSheet.ScrollArea = "A4:R" & Nriga 'imposto questo scroll area
    End Sub
     ed e' valido solo per questi
    
    In un Modulo di classe
    Sub AreaScroll()
    Dim Nriga As Long
    Nriga = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count + 1
      ActiveSheet.ScrollArea = "A4:R" & Nriga 'imposto questo scroll area
    End Sub
    
    Valido per tutti i fogli