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).
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.
1 comentario
hola tengo un problema al digitar en en van de excel lo soy if Target.column"1 then al presionar enter me dice error de compilación diciéndome que utilice Then o Go Toagradezco su ayuda. - eduard reyes daza
hola tengo un problema al digitar en en van de excel lo soy if Target.column"1 then al presionar enter me dice error de compilación diciéndome que utilice Then o Go Toagradezco su ayuda. - eduard reyes daza