¿Se puede realizar una macro que crea una hoja nueva y le escriba un código en dicha hoja?

Buenos días expertos, mi consulta es si se puede crear una hoja nueva y ponerle condigo a esta misma hoja. Lo que necesito es que después de crear una hoja me escriba algo así:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("c3:c5203")) Is Nothing Then
Cancel = True
       MsgBox "no se puede"
End If
End Sub

Esto es que si le doy doble click me ejecute una macro.

¿Se puede poner estoy automáticamente en una hoja nueva mediante macro?

Muchas gracias

1 Respuesta

Respuesta
1

Esto se puede realizar desde el evento NewSheet (nueva hoja) o desde el evento SheetBeforeDoubleClick, ambos en el objeto ThisWorkbook o Este libro.

En el primer caso se ejecutará para TODAS las hojas que insertes y quizás esa no sea entonces la mejor solución.

En el 2do caso, solo se ejecutará en las hojas que le indiques a la macro. Si ya sabés cómo se llamará la o las hojas que vas a crear nuevas, podés copiar esto (en mi ejemplo solo se ejecuta en hojas llamadas ENE y FEB):

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name <> "ENE" And Sh.Name <> "FEB" Then Exit Sub
If Not Application.Intersect(Target, Range("c3:c5203")) Is Nothing Then
Cancel = True
MsgBox "no se puede"
End If
End Sub

Pd) Todos los eventos explicados en mi manual Programación VBA 2007+

Sdos

Elsa

Hola Elsa muchas gracias algo asi ocupo, pero hay alguna forma de que me ejecute la macro a todas la hojas que comienzan con la palabra "ACT".

Esto debido a que creo nuevas hojas con la palabra "ACT" enlazado a un numero consecutivo. ejemplos "ACT1", "ACT2", "ACT3" etc.

Espero me entiendas bien muchas gracias

En ese caso cambia la comparación:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Left(Sh.Name, 3) <> "ACT" Then Exit Sub
If Not Application.Intersect(Target, Range("c3:c5203")) Is Nothing Then
Cancel = True
MsgBox "no se puede"
End If
End Sub

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas