............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Detectar Saltos de Página (Son Cambiantes)

Ver el tema anterior Ver el tema siguiente Ir abajo

Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Lun Dic 13, 2010 11:42 am

Hola, le voy a plantear mi problema, ojalá me ayuden, tengo un formulario con el que cargo una fecha y un monto, en una planilla (Columna A y B), hasta aquí todo bien el problema es que DESEO que al llegar a la última fila (no de Excel) de la página, coloque en la columna A (fila x) “Transporte” y en la Columna B (fila x) El total acumulado, y en la primera fila de la página siguiente ponga nuevamente “Transporte” y el total acumulado.
El problema es que no sé donde están las filas “que rodean” al salto de página, dado que puede haber cambios en la configuración de hoja (A4, Legal, Oficio) y sus respectivos márgenes. Hace cerca de un año que estoy con este tema y no puedo resolverlo, ojalá me proporcione el código.

No pongo archivo de excel pero sí una imagen
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Links de imagen y archivo

Mensaje por Tatayayan el Lun Dic 13, 2010 11:51 am

Este es el link de la imagen
Imagen
Este es el link del archivo
[Tienes que estar registrado y conectado para ver este vínculo]
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Lun Dic 13, 2010 8:59 pm

Tatayayan, me habia puesto a adaptar este viejo código de Erlandsen, pero prefiero mandarte "en crudo", mientras tanto intento otras opciones menos complejas
(Partamos de la base de que al trabajar en la misma Hoja, cuando pones Transporte no cambias nada, pero cuando reemplazas un valor de la lista por una suma, me parece que insertar una fila resulta inevitable (ídem para Transporte encabezamiento)

[Tienes que estar registrado y conectado para ver este vínculo]

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Lun Dic 13, 2010 11:16 pm

Gracias Gali, lo descargo y le doy un vistazo, Gracias Nuevamente.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Lun Dic 13, 2010 11:39 pm

Estuve viendo el archivo, muy bueno! pero se acerca a lo deseado pero no tanto, ya que analice el código y TotalPageBreaks = ActiveSheet.HPageBreaks.Count sirve porque los datos "ya estan", y lo que busco es que al instate de cada ingreso verifique el "salto".
Reitero el agradecimiento, pero voy a seguir "remando".
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Lun Dic 13, 2010 11:45 pm

Coloca una columna de datos sucesivos, mas 400, por ej y luego haz correr esto (primero los datos y despues, los subtotales y Trasnportes. La que hice intercala Las celdas "huecas" para rellenarlas

Código:
Sub Anterior_y_PosteriorHPB()
Dim recept
ActiveWorkbook.Names("pagina").RefersTo = "=GET.DOCUMENT(64)"
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

ReDim recept(1 To UBound(Evaluate("=pagina")))
recept = Evaluate("=pagina")
For i = 2 To UBound(Evaluate("=PAGINA")) - 1
Range("A" & recept(i) - 1, "C" & recept(i)).Insert shift:=xlDown
Next i
End Sub



1) veamos como quedan las "guionadas" respecto al las celdas vacias
2) esto
Código:
recept = Evaluate("=pagina")

se me ocurrió y Funciona!!!!!

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Mar Dic 14, 2010 12:01 am

Gali, te agradezco con el alma, pero esta última parte no se donde va, sé que ponés las indicaciones.
Otra, no es lo que busco lo mío es más o menos asi:
If Fila Antes de Salto Then
Range("A" & Fila Antes de Salto) = "Transporte"
Range("B" & Fila Antes de Salto) = Suma Columna B
Range("A" & Fila Antes de Salto + 1) = "Transporte"
Range("B" & Fila Antes de Salto + 1) = Suma Columna B 'Menos "lo sumado"
End If

El código proporcionado actúa con los datos ya puestos, y lo que persigo es a medida que se ingresa un dato preguntar si estoy "por saltar página"
Intuyo que tu segundo aporte sigue trabajando una ves que los datos ya están (a lo mejor me equivoco).
Doy mi Gratitud, y como dije voy a seguir buscando esa solución, que debe existir, pero tu aporte es muy valioso y me ayuda en esta búsqueda.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Mar Dic 14, 2010 11:47 am

Gali, este es un post tuyo muy antiguo, habrá que ver si lo tienes y és lo que necesito.
Archivo puesto por Gali
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Mar Dic 14, 2010 9:48 pm

Que tal!!! No busque el archivo, me encapriche con GET.DOCUMENT (64)

Plantea un estado de carga en la Primera hoja, donde todavia no se agrega ningun Transporte, sino hasta concluirla, posicionate en la celda a cargar con datos, haz correr la macro. Ahora rellena "adrede" las celdas, hasta estar cerca del probable salto de pagina,en la ultima crea los transportes y las sumas....
Prueba lo mismo en segunda hoja donde ya hay transportes creados anteriormente....Haz correr la macro siguiente

Código:
Sub AnalizarPosicion()
Dim I As Long
Dim tope As Long
ActiveWorkbook.Names("pagina").RefersTo = "=GET.DOCUMENT(64)"
Me.PageSetup.PrintArea = Me.UsedRange.Resize(Me.UsedRange.Rows.Count + 2).Address
On Error Resume Next
Err.Clear
tope = Me.Cells.Find("Transporte", ActiveCell, , , , xlPrevious).Row
If Err.Number <> 0 Then tope = 0
On Error GoTo 0
I = Cells(Rows.Count, "B").End(xlUp).Row + 1
Cells(I, "b") = I
If Evaluate("=Isnumber(match(1 + " & I & ",pagina, 0))") Then
Cells(I, "A") = "Transporte"
Cells(I, "B").Formula = "=Sum(B" & (tope + 1) & ":B" & (I - 1) & ")"
Cells(1 + I, "A") = "Transporte"
Cells(1 + I, "B").Formula = "=Sum(B" & (tope + 1) & ":B" & (I - 1) & ")"
End If
End Sub

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Miér Dic 15, 2010 2:50 pm

Gali, Muchas Gracias, ya lo resolví, te envíe correo con la solución, muy simple.
No sé donde poner este último código, lo entiendo muy poco, reitero lo que deseaba era que a medida que entraba datos por un formulario verificara los saltos.
Con tú último código lo puse en un módulo en un archivo nuevo (con hoja1 con datos) y me dieron muchos errores, muchos, por empezar en Me.PageSetup.PrintArea = Me.UsedRange.Resize(Me.UsedRange.Rows.Count + 2).Address
En definitiva no funcionó tu código, pero te agradezco la intención. Presiento que tu código trabaja sobre lo ya escrito (TODO) Y NO ES LO QUE BUSCABA.
Reitero este último código no sé donde va, y muy poco lo entiendo, no esta comentado linea a línea.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Miér Dic 15, 2010 7:34 pm

Gali, si no es mucha molestia, comentar tu código y poner tu archivo?
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Miér Dic 15, 2010 8:24 pm

Bueno aqui estamos....
1) En principio el codigo de ayer lo hice para una suerte de carga automatica que agrega las filas especiales a medida que iba llenando. Desde ya que ese codigo habia que empalmarlo para que funcionae con el formulario.
2) El código es éste, pero funciona solamente en Excel 2000 y 2003 y supongo que en XP tambien, pero hace agua en Excel 2007, y paso a mostrar donde

Código:
Private Sub BotonAceptar_Click()
Dim UltFila As Long, MontoX As Double
Dim tope As Long
UltFila = Ventas.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
If UltFila = 1 Then UltFila = 2 'solo una vez
Dim num As Long
If Trim(Monto) = "" Or (Not IsNumeric(Monto)) Then 'si esta vacío o puso letras
  Monto = "": Monto.SetFocus
  Exit Sub
End If
With Ventas

Monto = Replace(Monto, ",", ".")
MontoX = CDbl(Monto)
.Range("A" & UltFila).Value = Fecha.Value
.Range("B" & UltFila).Value = Monto.Text
Monto.Text = "": Monto.SetFocus
'''Hasta aca el codigo de Carga de Tatayayan

'Voy redefiniendo el Area de Impresion a medida que crece la Lista (esto habria que reverlo)
.PageSetup.PrintArea = .UsedRange.Resize(.UsedRange.Rows.Count + 2).Address

'Luego cargo un Nombre (precreado manualmente) conlas referencias de una XLMacro, que da una Array Formula
'''con las filas en que estan los saltos de Pagina
ActiveWorkbook.Names("pagina").RefersTo = "=GET.DOCUMENT(64)"

On Error Resume Next
Err.Clear
'''Defino tope como fila en la que estaba "Transporte" anterior, para definir bien las sumas
tope = .Cells.Find("Transporte", , .Cells(UltFila, "A"), , , , xlPrevious).Row
If Err.Number <> 0 Then tope = 0
On Error GoTo 0
'El manejo de errore y definicionen 0, se debena que en la primera hoja todavia no Existe un "Transporte" anterior
num = 1 + UltFila
''Vamos a verificar si la fila siguiente a la actual corresponde a un salto
If Application.Evaluate("=Isnumber(match(" & num & ",pagina , 0))") Then
''Esta formula es la de la discordia, funciona perfectamente en 2000/2003 y tal vez XP, pero no en 2007 and later
'''Entonces simplemente si la formula es TRUE, procedemos como sigue
.Cells(UltFila + 2, "A") = .Cells(UltFila, "A")
.Cells(UltFila + 2, "B") = .Cells(UltFila, "B")

.Cells(UltFila, "A") = "Transporte"
.Cells(UltFila, "B").Formula = "=Sum(B" & tope + 1 & ":B" & (UltFila - 1) & ")"
.Cells(1 + UltFila, "A") = "Transporte"
.Cells(1 + UltFila, "B").Formula = "=Sum(B" & tope + 1 & ":B" & (UltFila - 1) & ")"
End If
End With

End Sub




_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Miér Dic 15, 2010 8:32 pm

Pero me emperre en que tambien se pueda usar en XL 2007, hasta ahora no logro que Evaluate("=pagina") me devuelva una matriz en VBA. Eso sí lo logro en 2003

asi que tuve que adaptar el codigo con la Aberracion de PASAR por la Hoja con una Formulaarray estrepitosa y comedora de resursos, quedo algo asi


Código:
Option Base 1

Private Sub BotonAceptar_Click()
Dim UltFila As Long, MontoX As Double
Dim arry As Variant
Dim tope As Long, num As Long
Dim auxrange As Range
Application.ScreenUpdating = False
UltFila = Ventas.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
If UltFila = 1 Then UltFila = 2 'solo una vez
If Trim(Monto) = "" Or (Not IsNumeric(Monto)) Then 'si esta vacío o puso letras
  Monto = "": Monto.SetFocus
  Exit Sub
End If
With Ventas

Monto = Replace(Monto, ",", ".")
MontoX = CDbl(Monto)
.Range("A" & UltFila).Value = Fecha.Value
.Range("B" & UltFila).Value = Monto.Text
Monto.Text = "": Monto.SetFocus

ActiveWorkbook.Names("pagina").RefersTo = "=GET.DOCUMENT(64)"
.PageSetup.PrintArea = .UsedRange.Resize(.UsedRange.Rows.Count + 2).Address
On Error Resume Next
Err.Clear
tope = .Cells.Find("Transporte", , .Cells(UltFila, "A"), , , , xlPrevious).Row
If Err.Number <> 0 Then tope = 0
On Error GoTo 0
num = 1 + UltFila

Set auxrange = Range(.Cells(1, 77), .Cells(UltFila, 77))
auxrange.FormulaArray = "=IFERROR(TRANSPOSE(pagina),"""")"  ''''Verdadero espanto!!!!!!, pero funciona

If Application.Evaluate("=Isnumber(match(" & num & "," & auxrange.Address & " , 0))") Then
auxrange.Clear
Set auxrange = Nothing
.Cells(UltFila + 2, "A") = .Cells(UltFila, "A")
.Cells(UltFila + 2, "B") = .Cells(UltFila, "B")

.Cells(UltFila, "A") = "Transporte"
.Cells(UltFila, "B").Formula = "=Sum(B" & tope + 1 & ":B" & (UltFila - 1) & ")"
.Cells(1 + UltFila, "A") = "Transporte"
.Cells(1 + UltFila, "B").Formula = "=Sum(B" & tope + 1 & ":B" & (UltFila - 1) & ")"
End If
End With

End Sub

Lentísima, descartable, de todas maneras sigo trabajando con "pagina" un array virtual que quiero manipular en Excel 2007¿/2010, con la misma facilidad con que lo hago en 2003.
y va el archivo adaptado


_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Miér Dic 15, 2010 9:50 pm

Y aqui el aporte de Tatayayan, para ir agregando valores hasta que resulte necesario respetar los saltos de pagina para en lugar de valores subtotalizar y mandar a transporte ese valor en nueva hoja



En el Módulo del formulario de carga
Código:
Private Sub BotonAceptar_Click()
On Error GoTo x
 Dim UltFila As Long, MontoX As Double, Fec As Date, Mont As Double, FilaAux As Long
 UltFila = Ventas.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
 If UltFila = 1 Then UltFila = 2 'solo una vez
 If Trim(Monto) = "" Or (Not IsNumeric(Monto)) Then 'si esta vacío o puso letras
  Monto = "": Monto.SetFocus
  Exit Sub
 End If
 Monto = Replace(Monto, ",", "."): MontoX = CDbl(Monto)
 Ventas.Range("A" & UltFila).Select
 If FilaSaltoPag() < UltFila Then
  Ventas.Range("A" & UltFila).Value = Fecha.Value
  Ventas.Range("B" & UltFila).Value = Monto.Text
  'Monto.Text = "": Monto.SetFocus 'Después lo voy a habilitar
 Else
'Son iguales la última fila con el salto de página
'Paso lo útimo que cargue a variables, pongo transporte y suma
  Fec = Ventas.Range("A" & UltFila - 1).Value
  Mont = Ventas.Range("B" & UltFila - 1).Value
'Pongo en la Hoja Transporte y sumo
  Ventas.Range("A" & UltFila - 1).Value = "Transporte"
'Acá tengo que sumar para arriba pero NO TODO SINO HATA EL PRINCIPIO DE HOJA
  If Ventas.HPageBreaks.Count = 1 Then
      Ventas.Range("B" & UltFila - 1).FormulaLocal = "=SUMA(B2:B" & UltFila - 2 & ")"
    Else
      FilaAux = Ventas.Range("A:A").Find("Transporte", ActiveCell.Offset(-1, 0), , , , xlPrevious).Row
      Ventas.Range("B" & UltFila - 1).FormulaLocal = "=SUMA(B" & FilaAux & ":B" & UltFila - 2 & ")"
  End If
'Ahora Pongo Transporte y suma en la "otra hoja"
  Ventas.Range("A" & UltFila).Value = "Transporte"
  Ventas.Range("B" & UltFila).FormulaLocal = "=B" & UltFila - 1
'Traigo los datos que puse en las variables
  Ventas.Range("A" & UltFila + 1).Value = Fec
  Ventas.Range("B" & UltFila + 1).Value = Mont
'Pongo los datos que ingresé
  Ventas.Range("A" & UltFila + 2).Value = Fecha.Value
  Ventas.Range("B" & UltFila + 2).Value = MontoX
 'Monto.Text = "": Monto.SetFocus 'Después lo voy a habilitar
End If
Exit Sub
x:
  MsgBox "Ocurrió un Error", 64, ""
End Sub

Function FilaSaltoPag() As Long
 Dim i As Long, Fil_Salto As Long
 For i = 1 To Ventas.HPageBreaks.Count
  Fil_Salto = Ventas.HPageBreaks(i).Location.Row
 Next i
 FilaSaltoPag = Fil_Salto
End Function

En un modulo estandard

Código:
Option Explicit

Sub CargarFormulario()
 ActiveSheet.DisplayPageBreaks = True
 Load CargaVentas
 CargaVentas.Show
End Sub




_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Jue Dic 16, 2010 11:30 am

GALI, A FALTA DE OTRA PALABRA ES PERFECTO EXCELENTE[i]
Mis dudas puntuales, por favor explicamelas:
ActiveWorkbook.Names("pagina").RefersTo = "=GET.DOCUMENT(64)"
Función macro?
auxrange.FormulaArray = "=IFERROR(TRANSPOSE(pagina),"""")"
if imnediato?
Application.Evaluate("=Isnumber(match(" & num & "," & auxrange.Address & " , 0))")
¿?
Por que el 77
Set auxrange = Range(.Cells(1, 77), .Cells(UltFila, 77))
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Vie Dic 17, 2010 12:39 pm

Gali cuando puedas, me quitas esas dudas, Por favor. Gracias
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Vie Dic 17, 2010 11:12 pm



el arcivo de arriba intenta explicar un poco acercando conceptos el uso de GET.DOCUMENT(64) Ó INDICAR.DOCUMENTO(64)

Con esto apunto a contestar tu Primera pregunta....
1) ¿Probaste la macro para la Version XL 2003?????

2)
auxrange.FormulaArray = "=IFERROR(TRANSPOSE(pagina),"""")"
if imnediato?

Al fracasar en XL2007 el manejo de "Paginado" como una matriz en VBA (pero he de seguir intentando...si en 2003 se puede, por qué no en 2007), tuve que pasar por la hoja
el IFERROR es el que se incorporo con XL2007 (ya que esta version ("h de p") me obligoa replantera la solucion, pues entonces me valgo de algo de lo positivo que trajo (jejejejeje)

3)Application.Evaluate("=Isnumber(match(" & num & "," & auxrange.Address & " , 0))")
¿?
Una vez que WORKSHEETICÉ "Paginado", convirtiendolo en un vulgar auxrange, aplique Evaluate para que la combinacion ISNUMBER(MATCH me diga simplemente si esa posicion de Fila corresponde o no a una contendia en la Matriz de Saltos de Pagina...
4) Lo del 77 es Informatica en estado Puro (jejejejeje), simplemente necesitaba algun lugar de la Hoja para aterrizar con "Paginado" Formulaarray y me parecio que la Columna 77 era una excelente candidata......

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Sáb Dic 18, 2010 12:13 am

ACA PONGO OTRO ARCHIVO CON UNA UDF QUE TRABAJA EN 2003, PERO DEJA DE TRABAJAR SI ABRIMOS EN 2007/2010



Código:
Function SaltoEn(ordinal As Long) As Long
Dim arry As Variant
With ActiveWorkbook
arry = Application.Evaluate("Paginado")
SaltoEn = arry(ordinal)
End With
End Function


Requiere tener DEFINIDO un Nombre "Paginado", cuya referencia es "=INDICAR.DOCUMENTO(64)"

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Sáb Dic 18, 2010 12:15 pm

Como siempre IMPECABLE, Muchas Gracias!
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Sáb Dic 18, 2010 1:36 pm

En un Libro Original de Excel 97, vi la función INDICAR.DOCUMENTO, si le damos a su primer argumento el valor 64 como dice Gali devuelve una matriz de números de fila correspondientes a las filas que se encuntran directamente debajo de un salto de página manual o automatico, pero en código VBA "no se deja tratar como matriz", probé:
Sub prueba()
Dim p
p = Names(1) 'supongo ya creado el nombre, con INDICAR.DOCUMENTO(64)
MsgBox p
End Sub
muestra GET.DOCUMENTE(64), pero si pongo msgbox MsgBox UBound(p) muestra que no coincide los tipos, bah! ¿pero no es que es una matriz? "No se deja domar", no se puede tratarla como matriz.
Cuando te referis a XL 2003 es Excel 2003?
Si Gali tubiese este libro "lo saca".
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Sáb Dic 18, 2010 2:03 pm

Adrian: vuelvo sobre lo mismo
en 97-2000-2003
esta UDF FUNCIONA correctamente

Código:
Function SaltoEn(ordinal As Long) As Long
Dim arry As Variant
With ActiveWorkbook
arry = Application.Evaluate("Paginado")
SaltoEn = arry(ordinal)
End With
End Function

DEJA DE FUNCIONAR en XL2007 y 2010

Tengo instaladas en MI PC las siguientes versiones: XL2000 -2003 - 2007 Y 2010

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Sáb Dic 18, 2010 2:43 pm

Gali, tengo esta función
Function SALTITO(Nro As Long) As Long
SALTITO = ThisWorkbook.ActiveSheet.HPageBreaks(Nro).Location.Row
End Function
La curiosidad es que si tenemos 5 saltos de páginas, y no los vimos, es decir no bajamos con el scrollbar de excel y los vemos la función no los toma, si los vemos funciona bárbaro (valga redundar).
La pregunta del millon es si indicar.documento devuelve una matriz porque excel 2007 no la trata como tal, si bien las pondemos poner en celdas, pero digo como matriz en código VBA.
Gracias Por Todo Gali, empieza otro mundo para mí.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por GalileoGali el Miér Dic 22, 2010 11:31 pm

Concordante con nuestras experiencias BrianB, tambien expone las "extrañas condicionantes de HPageBreaks en XL2010"
La necesidad de "ver" que vos comentabas, etc.

Queria hacer una sencilla macro con un objeto collection y probando la carga de registros, verificando si el ingreso del siguiente .Row, dá error siempre y cuando ya este en el obCollection proveneiente de la car de todos los Location.Row de enetrada, con lo cual se sabria que estamos ante un salto de página, pero por lo visto en 2010, hace falta "creerle a HPageBreaks" y para eso parece que quiere que "pasemos vista" al area de impresion manualmente ( o mejor dicho ocularmente), estamos todos locos??!!!???¡¡¡??

De todas formas quiero empezar a probar, diferentes opciones, abandonando a GET.DOCUMENT por poco "versioadaptable"

[Tienes que estar registrado y conectado para ver este vínculo]

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Tatayayan el Jue Dic 23, 2010 10:19 am

Vi el post y con mi pobre inlgés, muy pobre y precario, algo entendí, o sea que con my function SALTITO I quite nearby, ja
Ahora comprendo que mi código fucniona, porque selecciono la celda y "veo" (baja el scroll bar) el salto.
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Detectar Saltos de Página (Son Cambiantes)

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.