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

Bucle vb para excel

Estas en el tema de Bucle vb para excel en el foro de Ofimática en Foros del Web. Hola gente. Tengo un problema que no puedo solucionar, ni después de recorrer toda la red. En una hoja de cálculo, necesito hacer un bucle ...
  #1 (permalink)  
Antiguo 06/12/2008, 13:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 0
Bucle vb para excel

Hola gente.

Tengo un problema que no puedo solucionar, ni después de recorrer toda la red.

En una hoja de cálculo, necesito hacer un bucle :

For i = 1 to ValorDeCelda

no me coje ninguna variable :
_______________________________

Sub Repite_Entrada()

Dim RValor As Long

RValor = Cells(13, 5).Value

For i = 1 To RValor

Range("N5:Q5").Select
Selection.Copy
Range("AC4").Select
Cells.Find(What:="", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveSheet.Paste
Application.CutCopyMode = False
Next i

End Sub
___________________-

en cambio si le meto un numero en vez de la variable, me funciona perfectamente.

(me perdonareis si veis cosas raras por aquí, pero lo mio no es precisamente la informática).

Venga. Birra para todos.

Juanjo
  #2 (permalink)  
Antiguo 06/12/2008, 19:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 137
Antigüedad: 15 años, 6 meses
Puntos: 4
Se más específico

Haber, ¿qué es lo que básicamente quieres hacer?
  #3 (permalink)  
Antiguo 06/12/2008, 21:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Bucle vb para excel

Debería funcionar, ¿te da algún error o algo así? ¿Has probado ejecutarlo paso a paso?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 07/12/2008, 03:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Bucle vb para excel

Lo que quiero hacer es lo siguiente.


En M5 pongo una cantidad (del 1 al 20).
En N5:Q5, tengo datos numéricos.

Entonces quiero que en las columnas AC:AG se busquen las últimas filas de la columna vacias, copie los datos de la fila correspondiente de N5:Q5 y los pegue el número de veces que tiene M5 en AC:AG .


Uf! No se si me explico bien.

Si pongo un número, y ejecuto, va de maravillas. Pero si pongo una variable, ejecutando paso a paso me salta desds el inicio del
bucle (for i = ......) a End Sub.

No me da ningún error

Última edición por HusqNiva; 07/12/2008 a las 04:10 Razón: Lio de celdas y columnas
  #5 (permalink)  
Antiguo 07/12/2008, 05:22
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Bucle vb para excel

Hola! HusqNiva.
Cells(13, 5) refiere a [E13] en lugar de referir a [M5] puesto que "13" es la fila" y "5" la columna".

Luego tu falla la corriges de varios modos:
Cells(5, 13).Value
Range("M5").Value
[M5].Value


Además de lo anterior, te sugiero que tengas presente otras alternativas para hallar la última celda disponible y para evitar el proceso iterativo (léase: pérdida de tiempo). Por ejemplo:
Código:
Sub Repite_Entrada_1()
Dim LastRow As Long
  LastRow = 1 + [AC65536].End(xlUp).Row
[N5:Q5].Copy Range("AC" & LastRow).Resize([M5], 1)
End Sub
Saludos, Cacho.

Última edición por mrocf; 07/12/2008 a las 05:38
  #6 (permalink)  
Antiguo 07/12/2008, 05:32
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Bucle vb para excel

Un detalle adicional: el rango [N5:Q5] tiene 4 columnas, mientras que [AC:AG] tiene 5...
Nota, entonces, que tu descripción "tiene algo raro".

Saludos, Cacho.
  #7 (permalink)  
Antiguo 07/12/2008, 05:42
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Bucle vb para excel

Y, ya que estamos: una optimización de lo anterior:
Código:
Sub Repite_Entrada_2()
[N5:Q5].Copy [AC65536].End(xlUp).Offset(1, 0).Resize([M5], 1)
End Sub
Saludos, Cacho.
  #8 (permalink)  
Antiguo 07/12/2008, 05:47
 
Fecha de Ingreso: diciembre-2008
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Bucle vb para excel

Guauuu!!!


Perfecto. Funciona perfecto.
Pero si ya me decía yo. Ande te metes tio!!

Espero aprender muchas más cosillas ya que esto del Excel es mundo que puede ser hasta divertido.

Gracias y birras.
  #9 (permalink)  
Antiguo 07/12/2008, 06:02
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Bucle vb para excel

Bueno: convengamos que no olvidando las "birras"... todo puede ser muy divertido.

Hasta la próxima, Cacho.
  #10 (permalink)  
Antiguo 07/12/2008, 06:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Bucle vb para excel

Cita:
Iniciado por mrocf Ver Mensaje
Y, ya que estamos: una optimización de lo anterior:
Código:
Sub Repite_Entrada_2()
[N5:Q5].Copy [AC65536].End(xlUp).Offset(1, 0).Resize([M5], 1)
End Sub
Saludos, Cacho.
Pero como pueden funcionar tan poquitas letras comparando el churro que ponía yo? (y no iba)

Saludos
  #11 (permalink)  
Antiguo 07/12/2008, 06:15
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Bucle vb para excel

Ocurre que para optimizar un código, tienes que dejar que la grabadora de macros cree el "código base".
A partir de él, empiezas a depurar. Por ejemplo:

Range("N5:Q5").Select
Selection.Copy


lo reemplazas por:

Range("N5:Q5").Copy

Y si quieres cambiar de notación, Range("N5:Q5").Copy lo reemplazas por:
[N5:Q5].Copy

O, por ejemplo:

Range("N5:Q5").Select
Selection.Copy
Range("AC10").Select
Selection.Paste


lo reemplazas por:
[n5:q5].Copy [ac10]

En fin: leyendo macros de otras personas puedes ir tomando ideas para optimizar los tuyos.

Saludos, Cacho.
  #12 (permalink)  
Antiguo 07/12/2008, 10:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Bucle vb para excel

Muchas gracias. A partir de ahora haré mis chapucillas más cortitas (si puedo claro)

Supongo que también se procesarán muuuucho más rápido...

Es que es lo suyo.

Muy agradecido.
Juanjo
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 17:11.