Foros del Web » Soporte técnico » Ofimática »

Error en tiempo de ejecucion de Range

Estas en el tema de Error en tiempo de ejecucion de Range en el foro de Ofimática en Foros del Web. Buenas tardes, estoy haciendo una macro en excel y tengo una duda de como realizar lo siguiente. El caso es que cada vez que trabajo ...
  #1 (permalink)  
Antiguo 03/12/2008, 09:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 37
Antigüedad: 15 años, 5 meses
Puntos: 0
Error en tiempo de ejecucion de Range

Buenas tardes,

estoy haciendo una macro en excel y tengo una duda de como realizar lo siguiente.

El caso es que cada vez que trabajo con un fichero, tengo un numero variable de columnas. Lo que intento es copiar el formato de las celdas de todas las filas de la columna n-1 a la columna n siempre que la columna n no sea texto. Para hacer esto me he basado en dos for que detallo a continuacion.

El problema me lo encuentro cuando intento seleccionar una celda de la columna n-1 para poder copiarle el formato, exactamente la instruccion "Range(Cells(m, n)).Select"

Al llegar a este punto en la ejecución me aparece :
Se ha producido el error '1004' en tiempo de ejecución:
Error en el método 'Range' de objeto '_Global'
y al depurar va a la instrucción que comentaba anteriormente "Range(Cells(m, n)).Select"


Os paso el codigo.


Dim n As Integer

___For j = 5 To 1000 ' para cada columna
_____mec = Cells(1, j)
_____n = j - 1
_____If Application.WorksheetFunction.IsText(mec) Then
_______For m = 1 To 33 'para cada fila de la columna

_________Range(Cells(m, n)).Select
_________Selection.Copy
_________Range(Cells(m, j)).Select
_________Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
_______Next m
_____Else
_________ultima = j
_________j = 1000
_____End If
___Next j


Alguien podria echarme una mano para poder hacer esto? creo que estoy cerca pero se me escapa algo y ya no se como avanzar.

Muchas gracias.
  #2 (permalink)  
Antiguo 03/12/2008, 16:27
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: Error en tiempo de ejecucion de Range

O asi:

range(cells(m,n),cells(m,n)).select

O simplemente:

Cells(m,n).Select

Dale una leidita a Range y otra a Cells para entednerlo mejor.

OJO, no he revisado tu macro, solo he ido "al grano"

Abraham
  #3 (permalink)  
Antiguo 03/12/2008, 19:13
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: Error en tiempo de ejecucion de Range

Hola! rockbirra.
Aparentemente (corrígeme si no es así) tu código copia el formato del rango [D1:D33] a las siguientes columnas hasta encontrar en la fila "1" algo que no sea texto.

En tal caso, intenta con:
Código:
Sub CopiaFormato()
LCol = 1000
j = Evaluate("min(istext(e1:" & Cells(1, LCol).Address & _
  ") * 9999 + column(e1:" & Cells(1, LCol).Address & "))")
[d1:d33].Copy
Range("e1", Cells(33, j - 1)).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False: Cells(1, j).Select
End Sub
 
Que el parámetro "LCol" tome valor "1000" (o sea que tu última columna a evaluar sea la Nº 1000) indica que tienes Excel 2007.
De no ser así, todos los códigos fallarán.

Saludos, Cacho.
  #4 (permalink)  
Antiguo 04/12/2008, 05:36
 
Fecha de Ingreso: noviembre-2008
Mensajes: 37
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Error en tiempo de ejecucion de Range

abrahamvj,

le has dado al clavo.

Estuve probando con el Cells(m,n).Select y no se porqué me daba un error. Ha sido volver a probarlo ya ha funcionado a la primera.

Muchissimas gracias por darme luz a mi problema :)
  #5 (permalink)  
Antiguo 04/12/2008, 05:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 37
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Error en tiempo de ejecucion de Range

mrocf,

gracias por tu aportación. Efectivamente el codigo hace lo que indicabas. Finalmente he seguido la opción de abrahamvj ya que era menos "intrusiva" con el codigo que había realizado.

Muchas gracias de nuevo.

Saludos
  #6 (permalink)  
Antiguo 04/12/2008, 05:50
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Error en tiempo de ejecucion de Range

Hola! rockbirra.
El motivo por el que te aporté un código alternativo es para que comparases "tiempos de ejecución".

Posiblemente adviertas que la diferencia torna muy notoria cuanto más columnas con datos útiles tengas. En efecto: trata de advertir que la macro no presenta ningún proceso iterativo, lo que disminuye sensiblemente el tiempo de ejecución.

Saludos, Cacho.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:44.