Crear un archivo nuevo en una hoja si tiene un valor determinado

Para Elsa Matilde.

Partiendo de esta consulta:

"Tengo en una carpeta un excel con varias sheet. En la primera sheet tengo la celda A5 en la que el usuario mete un valor numerico. Si por ejemplo la celda A5 meto el valor 7 que busque en las celdas A5 de todas las hojas de ese excel. Y la que contenga un 7 me genere un nuevo fichero de excel dentro de la carpeta en la que esta el excel inicial solo con las hojas que haya coincidido que en la celda A5 tengan un 7."

He intentado ejecutar esa macro desde Ejecutar en la ficha Programador, pero al hacerlo me pide crear una macro, le doy un nombre y me pone esto debajo, pero no me lo ejecuta.

Sub macro2()

End Sub

Perdona la pregunta,  soy nuevo en temas de Visual Basic.

¿Cómo puedo ejecutar ésto?

Gracias

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
Dim miArray() As String
'controla si se ingresó un valor en A5
If Target.Address(False, False) <> "A5" Then Exit Sub
'se arma una lista de hojas encontradas en col H   'ajustar
i = 1
For Each sh In Sheets
    'no se incluye la hoja activa
    If sh.Name <> "Hoja1" Then
        If sh.[A5] = Target.Value Then
            Range("H" & i) = sh.Name
            i = i + 1
        End If
    End If
Next sh
'defino la cantidad de hojas que alimentarán la matriz
y = i - 2     'se resta 2 porque la matriz empieza en 0
ReDim miArray(y)
For i = 0 To y
    miArray(i) = Range("H" & i + 1)
Next i
'se arma nuevo libro solo con hojas elegidas
ActiveWorkbook.Sheets(Array(miArray())).Copy
'controla posible error en el guardado
On Error Resume Next
'se crea un libro con las hojas copiadas y lo llamé RESUMEN.... ajustar
Set wb = ActiveWorkbook
With wb
    .SaveAs ThisWorkbook.Path & "\" & RESUMEN & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    'cerramos el nuevo libro
    .Close
End With
End Sub

1 respuesta

Respuesta
1

En la respuesta a la consulta que mencionas dejé este comentario e imagen de dónde se coloca el código:

La macro que adjunto se coloca en el Editor, en objeto HOJA donde vayas a ingresar el valor en A5.

Por lo tanto no se ejecuta desde la opción Ejecutar, sino al 'cambio' en alguna celda que en este caso será A5:

'controla si se ingresó un valor en A5

Es decir, que si en Hoja1 (porque allí la coloqué) se modifica la celda A5 se ejecutará este evento.

PD) Te invito a leer la sección Macros de mi sitio que dejo al pie. Allí encontrarás más notas acerca de cómo crear y ejecutar macros según dónde se las coloque.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas