error "1004" en tiempo de ejecución

25/10/2006 - 20:23 por JLMorales | Informe spam
Hola grupo:

Me apararece el siguiente error:
Se ha producido el error "1004" en tiempo de ejecución:
Error definido por la aplicación o el objeto

Esto es cuando corro una macro como esta:

Function Guardar()
Application.ScreenUpdating = False

Worksheets("Bitácora").Activate
ActiveSheet.Range("B6").End(xlDown).Offset(1, 0).Select
ufila = ActiveSheet.Cells(65536, 2).End(xlUp).Row + 1
With Sheets("Bitácora")

.Cells(ufila, 1) = Date
.Cells(ufila, 2) = Sheets("Hoja de Servicio").Range("AK3")
.
.Cells(ufila, 31) = Sheets("Hoja de Servicio").Range("A59")

End With
Worksheets("Hoja de Servicio").Activate
Application.ScreenUpdating = True
End Function

El error lo mando cuando llega a
ActiveSheet.Range("B6").End(xlDown).Offset(1, 0).Select

Tengo otro archivo con algo similar y trabaja sin problemas.

En realidad deseo que Bitacora este en la misma "hoja de servicio" es decir,
agregar los registros en celda "BI3" pero tambien me marca error. Solo quiero
ocupar una sola hoja.
¿que está sucediendo?

Preguntas similare

Leer las respuestas

#1 Ivan
25/10/2006 - 20:58 | Informe spam
hola JLMorales

no me hagas mucho caso, pero a la espera de alguien mas experto, me da
la impresion de que debajo de B6 debe estar vacio, osea que la ultima
fila es la 6. De estar en lo cierto estas queriendo seleccionar una
celda mas abajo de las existentes, la B65537.

de todas formas, o tienes un rango de celdas vacias entre b6 y la
ultima fila con datos de la columna B o la siguiente instruccion hace
exactamente lo que esta (con xlUp), y ademas, si en b6 hay algo
seguramente te evitara el error.

si no es asi, un posible truco para evitar el error cuando esto suceda
(este vacio el resto de la columna) es poner algo similar a esto->

If ActiveSheet.Range("B7") = "" then ActiveSheet.Range("B7").Select
else _ ActiveSheet.Range("B6").end(xlDown).offset(1,0).Select

-> esto suponiendo que en b6 tienes algo parecido a titulo de campo

no se si ira por aqui el tema, pero puede ser algo similar

espero te ayude en algo

un saludo y hasta pronto
Ivan
?
Respuesta Responder a este mensaje
#2 Ivan
25/10/2006 - 22:40 | Informe spam
hola de nuevo JL

mira a ver si esto es lo que quieres

Sub cargarFila()
Dim celda As Range, Origen As Variant
Dim num As Byte
' dado que parece que el origen de los datos es un rango de celdas _
' discontinuo, el siguiente array tendrias que rellenarlo con las
celdas _
' de origen correspondientes y en el orden que luego quieres _
' que te aparezcan en la lista. la de el ej tiene 12 columnas
Origen = Array("a59", "ak3", "a1", _
"a3", "a5", "b2", "b5", "c1", _
"c3", "c5", "d2")
' te pone los datos en la primera fila libre empezando en la columna
"BI"
Set celda = Worksheets("Hoja de Servicio") _
.[bi65536].End(xlUp).Offset(1, 0)
With celda
.Value = Date
For num = 1 To 11 'CAMBIA 11 por el nº de columnas menos 1
.Offset(0, num) = Worksheets("Hoja de Servicio") _
.Range(Origen(num - 1)).Value
Next
End With
Set celda = Nothing
End Sub

es lo que me ha parecido entender de tu explicacion

a ver si hay suerte, y si quieres comentas como te va

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Ivan
25/10/2006 - 22:50 | Informe spam
y hola de nuevo una vez mas

mejor cambialo por este

Sub cargarFila2()
Dim Origen As Variant, num As Byte
Origen = Array("a59", "ak3", "a1", _
"a3", "a5", "b2", "b5", "c1", _
"c3", "c5", "d2")
With Worksheets("Hoja de Servicio")
.[bi65536].End(xlUp).Offset(1, 0) _
.Value = Date
For num = 1 To 11
.[bi65536].End(xlUp).Offset(0, num) = _
.Range(Origen(num - 1)).Value
Next
End With
End Sub

sigue las indicaciones del anterior en cuanto al Array y al contador

por cierto es IMPORTANTE que pongas titulos(ocualquier dato), al menos
en la celda "BI2"

comentas si te vale??

un saludo
Ivan
Respuesta Responder a este mensaje
#4 JLMorales
26/10/2006 - 17:29 | Informe spam
Hola Ivan: Gracias por tu ayuda. Fijate con la primera propuesta me ha
funcionado sin ningun problema. solo que implica trabajar con otra hoja.

Ya he visto tus otras propuestas. Hoy mismo las voy a probar.

Agradezco tu incansable ayuda. Saludos

"Ivan" wrote:

hola JLMorales

no me hagas mucho caso, pero a la espera de alguien mas experto, me da
la impresion de que debajo de B6 debe estar vacio, osea que la ultima
fila es la 6. De estar en lo cierto estas queriendo seleccionar una
celda mas abajo de las existentes, la B65537.

de todas formas, o tienes un rango de celdas vacias entre b6 y la
ultima fila con datos de la columna B o la siguiente instruccion hace
exactamente lo que esta (con xlUp), y ademas, si en b6 hay algo
seguramente te evitara el error.

si no es asi, un posible truco para evitar el error cuando esto suceda
(este vacio el resto de la columna) es poner algo similar a esto->

If ActiveSheet.Range("B7") = "" then ActiveSheet.Range("B7").Select
else _ ActiveSheet.Range("B6").end(xlDown).offset(1,0).Select

-> esto suponiendo que en b6 tienes algo parecido a titulo de campo

no se si ira por aqui el tema, pero puede ser algo similar

espero te ayude en algo

un saludo y hasta pronto
Ivan
?


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida