Auto ejecutar una macro

Quiero que se autoejecute una macro que tengo en un libro pero no se como ya que soy muy novato, el nombre de la macro es Private Sub Worksheet_Change(ByVal Target As Range).

1 respuesta

Respuesta
1
Si lo que quieres es que cuando abras el Excel, se ejecute la macro, debes entrar en Visual Basic y escribir:
        Private Sub Workbook_Open()
                       Worksheet_Change Target
        End Sub
Pero ten en cuenta que antes debes definir qué es Target y los valores que toma...
Esto es lo que he hecho, como podría definir para que se ejecutara ello solo Private Sub Worksheet_Change(ByVal Target As Range)
'if target.Range = 'B7:AE7
fila = Target.Row
'controla si es la letra y si está por encima de la fila 31
If (Target.Value = "S" Or Target.Value = "D") And Target.Row = 7 Then
Range(Cells(fila, Target.Column), Cells(31, Target.Column)).Interior.ColorIndex = 36
Else
If (Target.Value = "" Or Target.Value = "") And Target.Row = 7 Then
Range(Cells(fila, Target.Column), Cells(31, Target.Column)).Interior.ColorIndex = 2
Else
If (Target.Value = "L" Or Target.Value = "M" Or Target.Value = "X" Or Target.Value = "J" Or Target.Value = "V") And Target.Row = 7 Then
Range(Cells(fila, Target.Column), Cells(31, Target.Column)).Interior.ColorIndex = 2
Else
If (Target.Value = "L." Or Target.Value = "M." Or Target.Value = "X." Or Target.Value = "J." Or Target.Value = "V.") And Target.Row = 7 Then
Range(Cells(fila, Target.Column), Cells(31, Target.Column)).Interior.ColorIndex = 36
Else
If Target.Value = "O" And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Interior.ColorIndex = 4
Else
If Target.Value = "V" And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Interior.ColorIndex = 33
Else
If Target.Value = "" And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Interior.ColorIndex = 2
Else
If Target.Value = "R" And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Interior.ColorIndex = 3
Else
If (Target.Value = "CB" Or Target.Value = "AB" Or Target.Value = "SC") And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Font.ColorIndex = 32
Else
If (Target.Value = "CV" Or Target.Value = "AV") And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Font.ColorIndex = 3
Else
If (Target.Value = "CVN" Or Target.Value = "SCN" Or Target.Value = "CBN" Or Target.Value = "PMN") And Target.Row >= 7 Then
Range(Cells(fila, Target.Column), Cells(fila, Target.Column)).Interior.ColorIndex = 7
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
'end if
End Sub
He probado tu código y parece que funciona bien. Cuando se produce un cambio en la Hoja de Excel, se analizan las condiciones y se cambia el color del fondo o del texto según el cambio realizado.
Perdoname si no acabo de entenderlo del todo, pero ¿qué es lo que no funciona? ¿Quieres qué cuando se abra el Excel se ejecute ese código?
Gracias por comrobar lo realizado, lo que deseo que las "S" y las "D" se ejecuten al abrir la hoja excel, ya que están en una segunda hoja. Perdona pero es que no tengo mucha idea
Si solo quieres comprobar esa condición al abrir, copia este código:
Private Sub Workbook_Open()
Dim col As Integer
col = 1
While (col < 50)
If (Hoja2.Cells(7, col).Value = "S" Or Hoja2.Cells(7, col).Value = "D") Then
Range(Cells(7, col), Cells(31, col)).Interior.ColorIndex = 36
End If
col = col + 1
Wend
End Sub
Va recorriendo en la Hoja2, toda la fila 7 en las primeras 50 columnas y si en alguna de esas celdas encuentra "S" o "D", realiza el pintado de celdas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas