Problema con Macro

Un saludo a todos.
Tengo esta macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "U41" Then
ActiveSheet.Name = Target.Value
End If
End Sub
El problema es que no me lo hace automático el cambio de nombre de la hoja, tengo que activarla e intro.
Jo lo que busco es que en la celda "U41" hay dos posibilidades:=SI(S38="";"Full1";S38), en "S38" sale el mes correspondiente y es cuando la hoja tiene que adoptar ese nombre.

1 Respuesta

Respuesta
1
Esa macro funciona bien; ojo que tal vez tu problema sea porque estés usando el evento equivocado; el evento "Worksheet_Change" solo funciona cuando ingresas valores en las celdas; si la celda cambia por algo "externo" (por ejemplo por recalcular el archivo), entonces este evento no se ejecuta y no hace nada. Si este es tu caso tal vez deberías usar el evento Worksheet_Calculate
Cualquier cosa comenta.
Un saludo y gracias por responder.
He echo pruevas como indicastes:(Worksheet_Calculate) i no me sale,el problema es que no se mucho sobre macros y tengo un manual pero solo sale lo mas facil y luego no me aclaro con segun que terminos me enseñas un ejemplo gracias.
En principio es bastante simple si ya pudiste llegar hasta donde llegaste. En la hoja donde quieras que pase lo que dice tu código tenés que cliquear donde dice "(General)" y buscar Worksheet, luego buscas a la derecha de este hasta que aparezca "Calculate". Te va a aparecer
Private Sub Worksheet_Calculate()
End Sub
O podes tipearlo directamente; al final escribes tu código reemplazando Target por Selection; debería quedarte más o menos así:
Private Sub Worksheet_Calculate()
On Error Resume Next 'Si da error no hace nada
If Selection.Address(False, False) = "U41" Then
If Selection <> "" Then
ActiveSheet.Name = Selection.Value
End If
End If
End Sub
'Claro que esto solo te va a funcionar si estás "Parado" en la celda U40; si querés que cambie siempre tenés que eliminar la condicion de ver si estás en esa celda:
If Selection.Address(False, False) = "U41" Then
Analizando un poco más, yo dejaría la macro como sigue:
Private Sub Worksheet_Calculate()
On Error Resume Next 'Si da error no hace nada
ActiveSheet.Name = Selection.Value
End Sub
'Esto va a poner el nombre de la hoja de la celda activa y si genera algún tipo de error (celda en blanco, con caracteres no validos, etc) entonces no hará nada.
Tal vez lo que desees por tu pregunta inicial es en lugar de la celda activa, cambiar la anteúltima línea por:
ActiveSheet.Name = U41

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas