Saltar al contenido

cambiar codigo de busqueda de fila vacia


Recommended Posts

publicado

hola todos estaba buscando una mejor alternativa para este codigo funciona sin problemas, pero es lento, lo que hace es pisicionarse en "B7" y a partir de ahi buscar la primera fila vacia

Range("B7").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop[/CODE]

lo probe a cambiar por este, pero no empieza en B7 y tengo filas vacias antes de B6, al ponerlo me agarra fila antes de B6

[CODE]Range("B" & Rows.Count).End(xlUp)..Offset(1, 0).Select [/CODE]

saludos

publicado

no puedo subir el archivo no me dejan por restriccion de coneccion los m******os que no quieren que haga las cosas que tengo que hacer -.-*

Range("B").End(xlDown).Offset(1, 0).Select[/CODE]

me sale error defnido por la aplicacion o el objeto cuando no hay datos a partir de B7 que es donde empieza la base de datos

lo que hago con ese codigo es desde un formulario ingresar datos en la primera fila vacia que haya en la base de datos, tomando en cuenta las vacias entre filas de datos

XDD que complicado es sin poder subir archivos

publicado

ninguna de las dos propuestas me sirvio, ambas fallan cuando la fila B7 esta vacia y funciona cuando hay tres o mas filas con datos muy extraño, este es el codigo que tengo

Public Sub Datos()

Range("B7").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop

pf = ActiveCell.Row
For i = 1 To ReCantidad

Call FormaFila
ActiveCell = CDbl(ReCodigo)
ActiveCell.Offset(0, 1) = ReCategoria

If IsNumeric(ReFactura) Then
ActiveCell.Offset(0, 2) = CDbl(ReFactura)
Else
ActiveCell.Offset(0, 2) = ReFactura
End If

ActiveCell.Offset(0, 3).FormulaR1C1 = "=SUMPRODUCT(1*(R7C4:R65536C4=RC4))"
ActiveCell.Offset(0, 4).FormulaR1C1 = Evaluate("=ROW()-7")

If ReReferencia.Visible = False Then
ActiveCell.Offset(0, 5) = ""
Else
ActiveCell.Offset(0, 5) = CDbl(ReReferencia)
End If

ActiveCell.Offset(0, 6) = ReDescripcion
ActiveCell.Offset(0, 7) = ReEstado
ActiveCell.Offset(0, 8) = CDate(ReFecha)
ActiveCell.Offset(0, 9) = Date
ActiveCell.Offset(0, 11) = CDbl(ReVaUnitario)

ActiveCell.Offset(0, 12).FormulaR1C1 = "=SUMPRODUCT((R7C4:R65536C4=RC4)*R7C13:R65536C13)"
ActiveCell.Offset(0, 13).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R4C35+1,""Y""))"
ActiveCell.Offset(0, 14).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R4C35+1,""YM""))"
ActiveCell.Offset(0, 15).FormulaR1C1 = "=IF(DAYS360(RC10,R4C35)<0,0,DAYS360(RC10,R4C35))"
ActiveCell.Offset(0, 16).FormulaR1C1 = "=IF(DED(RC2)<RC17,RC13,DACUM(RC13,DEP(RC2),RC17))"
ActiveCell.Offset(0, 17).FormulaR1C1 = "=IF(DED(RC2)<RC17,0,IF(RC17=0,0,IF(RC17<30,DACUM(RC13,DEP(RC2),RC17),IF(DED(RC2)-RC17>=30,DMEN(RC13,DEP(RC2)),IF(DED(RC2)-RC17=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC17))))))"
ActiveCell.Offset(0, 18).FormulaR1C1 = "=IF(DED(RC2)<RC17,0,IF(RC17=0,0,IF(RC17<360,DACUM(RC13,DEP(RC2),RC17),IF(DED(RC2)-RC17>=360,RC13*DEP(RC2),IF(DED(RC2)-RC17=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC17))))))"
ActiveCell.Offset(0, 19).FormulaR1C1 = "=IF(RC[-3]=0,0,IF(RC[-4]=0,0,RC[-8]-RC[-3]))"
ActiveCell.Offset(0, 20).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-5]=0,0,RC[-8]-DACUM(RC[-8],DEP(RC[-20]),RC[-5])))"

'Datos de año anterior al 30/Diciembre
ActiveCell.Offset(0, 23).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R6C35+1,""Y""))"
ActiveCell.Offset(0, 24).FormulaR1C1 = "=IF(RC16=0,0,DATEDIF(RC10,R6C35+1,""YM""))"
ActiveCell.Offset(0, 25).FormulaR1C1 = "=IF(DAYS360(RC10,R6C35)<0,0,DAYS360(RC10,R6C35))"
ActiveCell.Offset(0, 26).FormulaR1C1 = "=IF(DED(RC2)<RC[-1],0,DACUM(RC13,DEP(RC2),RC[-1]))"
ActiveCell.Offset(0, 27).FormulaR1C1 = "=IF(DED(RC2)<RC[-2],0,IF(RC[-2]=0,0,IF(RC[-2]<30,DACUM(RC13,DEP(RC2),RC[-2]),IF(DED(RC2)-RC[-2]>=30,DMEN(RC13,DEP(RC2)),IF(DED(RC2)-RC[-2]=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC[-2]))))))"
ActiveCell.Offset(0, 28).FormulaR1C1 = "=IF(DED(RC2)<RC[-3],0,IF(RC[-3]=0,0,IF(RC[-3]<360,DACUM(RC13,DEP(RC2),RC[-3]),IF(DED(RC2)-RC[-3]>=360,RC13*DEP(RC2),IF(DED(RC2)-RC[-3]=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC[-3]))))))"
ActiveCell.Offset(0, 29).FormulaR1C1 = "=IF(RC[-3]=0,0,IF(RC[-4]=0,0,RC13-RC[-3]))"
ActiveCell.Offset(0, 30).FormulaR1C1 = "=IF(RC[-4]=0,0,IF(RC[-5]=0,0,RC14-DACUM(RC14,DEP(RC2),RC[-5])))"

ActiveCell.Offset(1, 0).Select

Next i

uf = ActiveCell.Row - 1

'rango de formato fila: fuente, 10; letra, tahoma; ancho fila, 13
Range("B" & pf & ":AF" & uf).Select
Call FormaFila

'rango de centrado de columnas B, D-G, I-L y O-Q
Range("B" & pf & ":B" & uf & ",D" & pf & ":G" & uf & ",I" & pf & ":L" & uf & ",O" & pf & ":Q" & uf).Select
Call CentraDatos

'rango de formato numero M a N y de R a V
Range("M" & pf & ":N" & uf & ",R" & pf & ":V" & uf).Select
Call FormaNumeros

'rango de sangria izquierda C y H
Range("C" & pf & ":C" & uf & ",H" & pf & ":H" & uf).Select
Call SangriDatos

'rango de negritas columnas B, M-N y U-V
Range("B" & pf & ":B" & uf & ",M" & pf & ":N" & uf & ",U" & pf & ":V" & uf).Select
Call LetraNegrita

'rango con lineas verdes de B a N
Range("B" & pf & ":N" & uf).Select
Call PintaBerde

'rango con lineas anaranjado de O a V
Range("O" & pf & ":V" & uf).Select
Call PintaBanja

'rango de rellenos M a n y de U a V
Range("M" & pf & ":N" & uf & ",U" & pf & ":V" & uf).Select
Call PintaRellTotal

End Sub[/CODE]

perdon por no poder subir el bendito archivo, lo quiero subir pero restringieron los puertos y ni pidiendoselo al administrador por una vez T_T

publicado
ninguna de las dos propuestas me sirvio, ambas fallan cuando la fila B7 esta vacia y funciona cuando hay tres o mas filas con datos muy extraño, este es el codigo que tengo

Public Sub Datos()

Range("B7").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop

pf = ActiveCell.Row
For i = 1 To ReCantidad

Call FormaFila
ActiveCell = CDbl(ReCodigo)
ActiveCell.Offset(0, 1) = ReCategoria

If IsNumeric(ReFactura) Then
ActiveCell.Offset(0, 2) = CDbl(ReFactura)
Else
ActiveCell.Offset(0, 2) = ReFactura
End If

ActiveCell.Offset(0, 3).FormulaR1C1 = "=SUMPRODUCT(1*(R7C4:R65536C4=RC4))"
ActiveCell.Offset(0, 4).FormulaR1C1 = Evaluate("=ROW()-7")

If ReReferencia.Visible = False Then
ActiveCell.Offset(0, 5) = ""
Else
ActiveCell.Offset(0, 5) = CDbl(ReReferencia)
End If

ActiveCell.Offset(0, 6) = ReDescripcion
ActiveCell.Offset(0, 7) = ReEstado
ActiveCell.Offset(0, 8) = CDate(ReFecha)
ActiveCell.Offset(0, 9) = Date
ActiveCell.Offset(0, 11) = CDbl(ReVaUnitario)

ActiveCell.Offset(0, 12).FormulaR1C1 = "=SUMPRODUCT((R7C4:R65536C4=RC4)*R7C13:R65536C13)"
ActiveCell.Offset(0, 13).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R4C35+1,""Y""))"
ActiveCell.Offset(0, 14).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R4C35+1,""YM""))"
ActiveCell.Offset(0, 15).FormulaR1C1 = "=IF(DAYS360(RC10,R4C35)<0,0,DAYS360(RC10,R4C35))"
ActiveCell.Offset(0, 16).FormulaR1C1 = "=IF(DED(RC2)<RC17,RC13,DACUM(RC13,DEP(RC2),RC17))"
ActiveCell.Offset(0, 17).FormulaR1C1 = "=IF(DED(RC2)<RC17,0,IF(RC17=0,0,IF(RC17<30,DACUM(RC13,DEP(RC2),RC17),IF(DED(RC2)-RC17>=30,DMEN(RC13,DEP(RC2)),IF(DED(RC2)-RC17=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC17))))))"
ActiveCell.Offset(0, 18).FormulaR1C1 = "=IF(DED(RC2)<RC17,0,IF(RC17=0,0,IF(RC17<360,DACUM(RC13,DEP(RC2),RC17),IF(DED(RC2)-RC17>=360,RC13*DEP(RC2),IF(DED(RC2)-RC17=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC17))))))"
ActiveCell.Offset(0, 19).FormulaR1C1 = "=IF(RC[-3]=0,0,IF(RC[-4]=0,0,RC[-8]-RC[-3]))"
ActiveCell.Offset(0, 20).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-5]=0,0,RC[-8]-DACUM(RC[-8],DEP(RC[-20]),RC[-5])))"

'Datos de año anterior al 30/Diciembre
ActiveCell.Offset(0, 23).FormulaR1C1 = "=IF(RC17=0,0,DATEDIF(RC10,R6C35+1,""Y""))"
ActiveCell.Offset(0, 24).FormulaR1C1 = "=IF(RC16=0,0,DATEDIF(RC10,R6C35+1,""YM""))"
ActiveCell.Offset(0, 25).FormulaR1C1 = "=IF(DAYS360(RC10,R6C35)<0,0,DAYS360(RC10,R6C35))"
ActiveCell.Offset(0, 26).FormulaR1C1 = "=IF(DED(RC2)<RC[-1],0,DACUM(RC13,DEP(RC2),RC[-1]))"
ActiveCell.Offset(0, 27).FormulaR1C1 = "=IF(DED(RC2)<RC[-2],0,IF(RC[-2]=0,0,IF(RC[-2]<30,DACUM(RC13,DEP(RC2),RC[-2]),IF(DED(RC2)-RC[-2]>=30,DMEN(RC13,DEP(RC2)),IF(DED(RC2)-RC[-2]=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC[-2]))))))"
ActiveCell.Offset(0, 28).FormulaR1C1 = "=IF(DED(RC2)<RC[-3],0,IF(RC[-3]=0,0,IF(RC[-3]<360,DACUM(RC13,DEP(RC2),RC[-3]),IF(DED(RC2)-RC[-3]>=360,RC13*DEP(RC2),IF(DED(RC2)-RC[-3]=0,0,DACUM(RC13,DEP(RC2),DED(RC2)-RC[-3]))))))"
ActiveCell.Offset(0, 29).FormulaR1C1 = "=IF(RC[-3]=0,0,IF(RC[-4]=0,0,RC13-RC[-3]))"
ActiveCell.Offset(0, 30).FormulaR1C1 = "=IF(RC[-4]=0,0,IF(RC[-5]=0,0,RC14-DACUM(RC14,DEP(RC2),RC[-5])))"

ActiveCell.Offset(1, 0).Select

Next i

uf = ActiveCell.Row - 1

'rango de formato fila: fuente, 10; letra, tahoma; ancho fila, 13
Range("B" & pf & ":AF" & uf).Select
Call FormaFila

'rango de centrado de columnas B, D-G, I-L y O-Q
Range("B" & pf & ":B" & uf & ",D" & pf & ":G" & uf & ",I" & pf & ":L" & uf & ",O" & pf & ":Q" & uf).Select
Call CentraDatos

'rango de formato numero M a N y de R a V
Range("M" & pf & ":N" & uf & ",R" & pf & ":V" & uf).Select
Call FormaNumeros

'rango de sangria izquierda C y H
Range("C" & pf & ":C" & uf & ",H" & pf & ":H" & uf).Select
Call SangriDatos

'rango de negritas columnas B, M-N y U-V
Range("B" & pf & ":B" & uf & ",M" & pf & ":N" & uf & ",U" & pf & ":V" & uf).Select
Call LetraNegrita

'rango con lineas verdes de B a N
Range("B" & pf & ":N" & uf).Select
Call PintaBerde

'rango con lineas anaranjado de O a V
Range("O" & pf & ":V" & uf).Select
Call PintaBanja

'rango de rellenos M a n y de U a V
Range("M" & pf & ":N" & uf & ",U" & pf & ":V" & uf).Select
Call PintaRellTotal

End Sub[/CODE]

perdon por no poder subir el bendito archivo, lo quiero subir pero restringieron los puertos y ni pidiendoselo al administrador por una vez T_T

Ya te hemos dado la respuesta que necesitas, pero ya que no puedes adaptarla se necesita el libro de muestra, sube el archivo desde otro lugar, de lo contrario estaremos perdiende el tiempo

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.