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
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.