selezionare tutte le celle



  • selezionare tutte le celle
    di ilFonta data: 14/07/2016 18:33:22

    Salve a tutti

    vorrei che tutti i dati presenti in tutte le celle di tutti i fogli di cui è composto il mio documento fossero appoggiati sul lato destro della cella e la larghezza della colonna fosse adattata alla dimensione del contenuto delle celle.

    Ho scritto queste righe di codice, ma qualcosa non va.

    Potete aiutarmi

    Grazie mille
     
    Sub prova()
        Dim sh As Variant
    
    Dim sh As Variant    
    For Each sh In Sheets
            With sh
                .Cells.Select
                    With Selection
                        .HorizontalAlignment = xlRight
                        .ShrinkToFit = True
                    End With
            End With
        Next
    



  • di Thyke data: 14/07/2016 18:51:00

    prova questa... 
     
    Sub test()
    For a = 1 To Sheets.Count
    Sheets(a).Select
    Cells.Select
    Selection.HorizontalAlignment = xlRight
    Columns("A:XFD").AutoFit
    Next
    End Sub


  • selezionare tutte le celle
    di ilFonta data: 14/07/2016 19:18:56

    Ovviamente funziona

    Grazie di nuovo



  • di Vecchio Frac data: 14/07/2016 19:33:14

    @Thyke
    Più VBA-like... adesso da te comincio a pretenderlo :)
     
    Sub test2()
        ActiveWorkbook.Sheets.Select
        Selection.HorizontalAlignment = xlRight
        Columns.AutoFit
    End Sub






  • di Thyke data: 14/07/2016 21:39:13

    il tuo codice agisce solo sul foglio1, ilFonta lo voleva fare su tutti i fogli...ed il mio lo fa

    l'unica cosa che al più puoi rimproverarmi è questa:
    Columns("A:XFD").AutoFit

    ma ti do la mia parola che avevo fatto da subito così:

    Sub test()
    For a = 1 To Sheets.Count
    Sheets(a).Select
    Cells.Select
    Selection.HorizontalAlignment = xlRight
    Columns.AutoFit
    Next
    End Sub

    però probabilmente avevo fatto qualche errore di digitalizzazione e mi dava un errore, cosi un pò per fretta ho usato la dizione completa

    in ogni caso cosa intendi per VBA-Like? tutte le porcherie che scrivete per fare le stesse cose ma usando un linguaggio più complesso?

    Tranquillo che la volta che mi serve sul serio lo uso...

    in ogni caso non mi vedrai MAI usare il vbLf...il mio stile mi impone la dicitura ascii Chr(10), fattene una ragione



  • di Vecchio Frac data: 14/07/2016 22:04:18

    LOL, hai ragione solo sul Selection che si riferisce solo alla cella attiva :)
    Chr(10) non è VBA Like, è GWBasic ...
    Uhm, VBA non è scrivere porcherie, è sfruttare al meglio per esempio gli oggetti offerti dalle diverse librerie che lo compongono. Non è nemmeno questione di complessità del linguaggio, ma l'uso intelligente dell'istruzione giusta nel contesto giusto...
    E lo so che lo sai usare seriamente.. è per questo che ti stuzzico :)

    Uff... non volevo usare variabili e poi così è concettualmente simile alla tua, pazienza ;)
     
    Option Explicit
    
    Sub test2()
    Dim sh As Worksheet
        For Each sh In Sheets
            sh.Cells.HorizontalAlignment = xlRight
            sh.Columns.AutoFit
        Next
    End Sub






  • di Thyke data: 14/07/2016 22:19:44

    sarà GWBasic ma lo puoi usare anche in VBA, ed essendo che io per lavoro gioco molto sulle stringhe e sui caratteri ormai ho una buona confidenza con tutte le istruzioni classiche legate alla gestione delle stringhe. Inoltre devo essere sincero ma ho letto molte discussioni nel forum e provato molto del codice che c'è postato e molto di questo codice l'ho riscritto nel "mio" stile ho controllato i tempi di esecuzione e fino a questo momento il VBA-like non è più veloce del basic classico, probabilmente perchè io nel mio stile ho raggiunto un buon grado di ottimizzazione che non possiedo nel VBA like ma conto di fare vari test di comparazione, mi sto veramente incuriosendo, voglio scoprire qual'è il più veloce a livello di esecuzione che poi è l'unica cosa che mi interessa in definitiva



  • di Thyke data: 14/07/2016 22:26:04

    ed in questo caso il tuo è più veloce...

    buono a sapersi



  • di scossa data: 15/07/2016 10:31:41

    cit. V.F.: " hai ragione solo sul Selection che si riferisce solo alla cella attiva"

    Non ho capito cosa intendi, ma l'unica cosa che non si può fare agendo su tutti i fogli in un sol colpo è l'Autofit delle colonne, infatti per l'allineamento basterebbe

    Sub Allinea()
    Sheets.Select
    Cells.Select
    Selection.HorizontalAlignment = xlLeft
    Cells(1,1).Select
    Sheets(1).Select
    End Sub

    P.S.: Cells.Select è necessario


    scossa's web site
    Se tu hai una mela, ed 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)


  • selezionare tutte le celle
    di ilFonta data: 15/07/2016 16:55:58

    Ragazzi non litigate. Ringrazio tutti per l'aiuto, ognuno di voi ha fatto meglio di quello che sapevo fare io, quindi... grazie mille



  • di Vecchio Frac data: 15/07/2016 19:18:24

    Ma figurati, chi litiga? Tra di noi c'è la sana competizione a chi la sa più lunga... di solito vince scossa, non sempre, ma di solito sì ^_^