Formato celdas excel con vb

Estoy realizando unos informes pero a la hora de pasarlo al excel (desde el vb) lo pego como una matriz pero me gustaría darle formato a varias filas.
Es decir primero le doy el mismo formato a toda la matriz y después a la fila de tienen en la columna A la palabra Cua&n(n es un numero sucesivo) le doy otro formato.
Lo hago de la siguiente manera:
' Le damos formato a toda la matriz
Range("A7").Resize(x2, 55).Select ' asi selecciono toda la matriz: matriz(x2,55)
Selection.Font.Italic = True
    With Selection.Font
        .Name = "Calibri"
        .Size = 12
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
End With
'PONEMOS DIFERENTE FORMATO A LAS CELDAS QUE SON CUA+num
Range("A7").Select
num = 1
Do While ActiveCell <> Empty
    If ActiveCell.Value = "CUA" & num Then
    ActiveCell.EntireRow.Select
        With Selection.Font
            .Name = "Calibri"
            .Size = 14
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        Selection.Font.Bold = True
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    ActiveCell.Offset(1, 0).Select
    num = num + 1
    Else
    ActiveCell.Offset(1, 0).Select
    End If
Loop
Funciona perfectamente, el problema es que me ralentiza muchísimo la aplicación y ademas me gustaría seguir metiendo más formatos por lo que me gustaría saber si hay una manera más sencilla y rápida.

1 respuesta

Respuesta
1
' -- Opcional : colocar en negrita y de color rojo los enbezados en la hoja
        With Obj_Hoja   
            .Rows(1).Font.Bold = True  
            .Rows(1).Font.Color = vbRed   
            ' -- Autoajustar las cabeceras
            . Columns("A:Z").AutoFit
        End With  
    End If  
Ese es un ejemplo espero te sirva, ten en cuenta que debes decir a que libro quieres hacer los cambios.
Muy buena solución! Muchas gracias!
Oye! Una consultita! Es que tengo otro problemilla y quizás puedas arreglármelo.
Tengo 3 hojas diferentes pero me gustaría hacer un resumen que englobe todas, lo que pasa que un mismo dato(color pro ejemplo) en una hoja esta en la columna 7, otra la 25 y otra la 2.
Entonces quiero hacer una matriz que tenga todo ese resumen.
Sabrías decirme como puedo de una manera sencilla coger toda una columna y convertirla en una columna de mi matriz. Gracias.
Saludos
Lo que yo haría es decirle a visual basic, que solo lea esas columnas debes hacer que el programa recorra hasta la columna 7 con un siclo for aumentando las co lumnas hasta que llegue a 7, luego si quieres que lea hasta la columna 25 para no empezar desde 1 solo debes hacer otro for desde 7 hasta 25, y así las columnas que quieras saber.
Como otro dato debes seleccionar el Sheets(numero de libro). Cells(fila, columna)
Suerte saludos

Añade tu respuesta

Haz clic para o