Macro para excel

Buenos días necesitaría un macro para excel que inserte un salto de página cuando encuentre una palabra en concreto en una columna.
Ademas necesito que lo haga aunque haya lineas en blanco por medio. ¿Puedes ayudarme por favor?. Muchas gracias
Respuesta
1
1º ¿Dónde quieres que se haga el salto de la página? ¿Antes o después de esa fila?
2º No entiendo lo de las líneas en blanco por medio. ¿Puedes explicarlo mediante un ejemplo?
Hola Angel gracias por contestar. El salto es después de esa fila.
Por ejemplo, el macro busca en toda la columna A la palabra "direccion". Y cada vez que la encuentre (la palabra se repite por eso debe seguir buscando hasta el fin de columna) debe insertar por debajo un salto de página.
Lo de las lineas en blanco te lo igo porque no siempre hay valores en todas las filas aveces hay entremedio lineas sin valores. Aun así debe seguir buscando.
Gracias y un saludo
Creo que con esto que te paso más abajo puedes resolver tu problema. Solo tendrías que cambiar en la macro los parámetros en negrita por los que te interesen.
Saludos
Angel
Function ACNColocaSaltos(CeldaInicial As String, CeldaFinal As String, Palabra As String)  
CeldaInicialColumna = Mid(CeldaInicial, 1, 1)
CeldaInicialFila = Val(Mid(CeldaInicial, 2))
CeldaFinalColumna = Mid(CeldaFinal, 1, 1)
CeldaFinalFila = Val(Mid(CeldaFinal, 2))
For Fila = CeldaInicialFila To CeldaFinalFila
    For Columna = Asc(CeldaInicialColumna) To Asc(CeldaFinalColumna)
        Celda = Trim(Chr(Columna)) + Trim(Str(Fila))
        If Range(Celda).Value = Palabra Then
           Rows(Fila).Select
           ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
        End If
    Next
Next
End Function



 
Sub macroacn()
    If ACNColocaSaltos("A1", "A80", "direccion") Then
        MsgBox ("PROCESO TERMINADO")
    End If
End Sub


Hola Angel,
Muchas gracias. La verdad es que no se porque pero no me funciona. Lo he probado varias veces y no me va.
Mira yo tengo este macro:
Sub InsertaFilas(ByVal pNomBuscar As String, ByVal pNumFilas As Integer, ByVal pCol As Integer)
'Variables para controlar el programa
'Inserta tantas filas indicadas por pNumFilas cuando encuentra el valor pNombre en la columna pCol
Dim pValor As String
Dim pCont As Integer
Dim pCont2 As Integer
Dim pRow As Integer
Dim pContSalir As Integer
'Dar los valores que queremos de buqueda
pValor = pNomBuscar
pRow = 0 ' Esto quiere decir que empezamos a buscar en la fila 2. Modificar
' No tocar el código por debajo
pCont = 2 ' Forzar un bucle infinito
While pCont > 1  'Idem$
pRow = pRow + 1
    If UCase(ActiveSheet.Cells(pRow, pCol)) = UCase(pValor) Then 'Insertar nuevas
            pRow = pRow + 1 'Posicionarnos justo en la inferior
        For pCont2 = 1 To pNumFilas ' en función de lo que le hayamos dicho
            ActiveSheet.Rows(pRow).Insert xlShiftDown
            pRow = pRow + 1 'Incrementar el contador
        Next pCont2
    End If
    If ActiveSheet.Cells(pRow, pCol) = "" Then
        pContSalir = pContSalir + 1
        If pContSalir = 20 Then pCont = 1 ' salir del bucle cuando haya 20 valores vacioes
    End If
Wend
End Sub
Private Sub CommandButton1_Click()
'Llamar a la función una vez por cada condicion
InsertaFilas "        Señores:", 4, 1
InsertaFilas "             20009-SAN SEBASTIAN", 4, 1
InsertaFilas "                                                             Atentamente.", 4, 1
End Sub
Y lo que necesito es que ademas de insertar estas filas (que ya lo hace bien) cada vez que encuentre " 20009-SAN SEBASTIÁN" ademas inserte un salto de página, ¿crees que podrías mof¡dificar el macro para que lo haga.
En cualquier caso aprovecho para saludarte. Carlos
Lo siento, pero lo que pedías en tu pregunta inicial era una macro que insertase un salto de página a continuación de una determinada palabra cada vez que la encontrase en una columna dada.
Dicha macro está hecha según lo que solicitaste, y he comprobado que funciona correctamente, por lo que tal vez no la estés utilizando bien.
Pienso que tal vez lo que hubieras necesitado desde el inicio era modificar tu macro, pero en ese caso tendrías que haberlo dicho así desde el principio.
¿Podrías finalizar esta pregunta?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas