Como hace una macro de colorear

Quiero hacer una macro que me permito colorear por filas la cantidad de celdas que se coloque en numero en la primera es decir que si yo coloco el numero 25 me pinte 25 celdas hacia la derecha agradezco de antemano la colaboración

2 respuestas

Respuesta
4

Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Range("B" & Target.Row, Cells(Target.Row, Columns.Count)).Interior.ColorIndex = xlNone
        If IsNumeric(Target.Value) And Target.Value <> "" Then
            Range("B" & Target.Row, Cells(Target.Row, Target.Value + 1)).Interior.ColorIndex = 6
        End If
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Cada que pongas un número en la columna A, se pintarán el número de celdas hacia la derecha.


[':) Si es lo que necesitas. No olvides valorar la respuesta.

¡Gracias!  muchas gracias 

Si deseo que tenga en cuenta un numero en una celda digamos celda AI 1 y que si es menor a es numero lo pinte de un color y si es mayor de otro que parte del código cambiaría

Gracias

No entendí tu nueva petición, lo puedes explicar con ejemplos

Si claro digamos que en la celda B1 coloco 30 si y hay si colocan de color las 25 celdas pero entonces en digamos que en la celda A2 coloco 8

Entonces lo ideal seria que si es de ocho hacia atrás pinte de un color y hacia adelante de otro

Va

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Range("B" & Target.Row, Cells(Target.Row, Columns.Count)).Interior.ColorIndex = xlNone
        If IsNumeric(Target.Value) And Target.Value <> "" Then
            Range("B" & Target.Row, Cells(Target.Row, Target.Value + 1)).Interior.ColorIndex = 6
            If IsNumeric(Range("B1").Value) And Range("B1").Value <> "" Then
                Range("B" & Target.Row, Cells(Target.Row, Range("B1").Value + 1)).Interior.ColorIndex = 5
            End If
        End If
    End If
End Sub
Respuesta
3

No espeficicaste si de una columna es especifico o en cualquier celda, este es el resultado de la macro para cualquier celda de la hoja 1

y esta es la macro, pégala en el modulo VBA de la hoja 1 o de la hoja donde la vayas a usar.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target > 0 Then Target.Offset(0, 1).Resize(1, Target.Value).Interior.ColorIndex = 3
If Err.Number > 0 Then GoTo saL
saL:
On Error GoTo 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas