Formattazione selezione

  • Formattare di Roberto
    Ciao ragazzi
    non è da molto tempo che mi cimento con il vba, e per questo sono quì a chiedere informazioni.
    il sito è eccezzionale, sarei perso senza di voi.
    comunque veniamo ai fatti:
    dalla rete ho copiato una serie di dati che ho poi incollato su un foglio excel range("f2:g30"), al momento di fare la media dei valori mi sono trovato difronte ad un errore.
    le celle sono tutte formattate in formato testo, cercando di cambiare formato non succede nulla i valori rimangono sempre sul lato sinistro.
    e' possibile con il vba rimediare portando tutti i valori in formato numero e sul lato destro???

    ciao a tutti e grazie per le eventuali risposte.

    mandi roberto

    di Big ronnie
    Se sono numeri interi fai così
    range("f2:g30").select
    selection.numberformat = "0"
    se ci sono dei decimali devi inserire uno zero per ogni cifra decimale dopo lo zero fra apici
    range("f2:g30").select
    selection.numberformat = "0,000"
    spero ti funzioni.ciao

    di Roberto
    Ciao big ronnie
    ho provato anch'io quel sistema, il risultato però è che se vai vai a controllare con formato celle, il formato è numero, ma sulla cella il valore rimane sempre a sinistra, e se per ipotesi sulla cella f32 immetto la formula =media(f2:f30) mi dà errore.

    grazie di tutto e spero di essermi spiegato.

    mandi roberto

    di Apoben64
    Ciao roberto, al di fuori del formato che desideri avere , devi inteargire con il formato cella , allineamento a destra.
    ti allungo il codice . un saluto luca

     
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro registrata il 13/04/2006 da LUCA
    '
    
    '
        Range("F2:G30").Select
        With Selection
            .HorizontalAlignment = xlRight
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
    End Sub

    di Roberto
    Ciao luca
    sei sempre molto gentile a rispondere, forse mi sono spiegato male, nel range("f2:g30") ho dei valori numerici copiati da internet, ora questi si dispongono nelle celle come formato testo, allineati a sinistra con il triangolino di errore per ogni cella.
    se ora su f31 vado a mettere la formula =media(f2:f30) il risultato è #div/0!

    di Apoben64
    Roberto, utilizzando la prima macro ho risposto alla richiesta dell'allineamento a sx.
    prova questa macro (inserita tutta in un modulo) che invece converte il tuo range in valore numerico , utilizzando una funzione pubblica che si richiama in tutto il progetto ed una privata applicata al tuo range .
     
    Sub converti()
        Dim rng As Range
        Dim c As Range
    
    
        With ActiveSheet
    
            Set rng = .Range("F2:30")
                For Each c In rng
                    c.Value = EstraeNumeri(c.Value)
                Next
            Set rng = Nothing
    
    
         End With
    
    
    End Sub
    Public Function EstraeNumeri(SS As String) As Long
    
    
        Dim i As Integer
    
    
        For i = 1 To Len(SS)
            If IsNumeric(Mid(SS, i, 1)) Then
                EstraeNumeri = EstraeNumeri & Mid(SS, i, 1)
            End If
        Next
    
    
    End Function
    
    
    
    

    di Apoben64
    Dimenticavo che ovviamente devi inserire la tua formula.

    di Big ronnie
    Cercando sulla guida in linea di excel ho trovato che x convertire i numeri in formato testo in numeri si deve moltiplicare il numerotesto x 1(uno numero).quindi con il registratore di macro ho fatto questa semplice macro.ciao ;-d
     
    Sub ConvertiTestoNumeri()
    'assegno il valore uno all'ultima cella in modo da non interferire con altri dati.
        Range("a65536") = 1 ' Uno è un numero e non Testo
        Range("a65536").Select
        Selection.Copy
        Range("F2:G30").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
        Range("a65536").Clear 'Pulisco l'ultima cella
    End Sub
    

    di Roberto
    Ragazzi siete mitici .
    con la routin di apoben64 tutto fila liscio. e' da poco che mi sono avvicinato al vba, e per me ogni giorno è una conquista, sono autodidatta, e cerco di adattare al vba quello che mi ricordo del vecchio sinclair zx spectrum. purtroppo la mia mente non è piu elastica e devo accontentarmi.
    grazie anche a big ronnie sempre veloce nel rispondere, cercherò per quanto posso anch'io di aiutare. tanti auguri di buona pasqua a tutti.
    mandi roberto.