Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup microsoft.public.es.* 1 Foro > Newsgroup microsoft.public.es.excel
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 14-07-2008, 23:09:03
Roberto
 
Mensajes: n/a
Predeterminado do while loop

Tengo una hoja de cálculo que contiene información sobre productos de
inventario, en una columna a través de una formula se determina si hay
faltante o no. Ahora bien, estoy creando un macro que verifica que
productos es necesario adquirir o estan en el límite mínimo de manera
de crear una lista para de productos necesarios. El problema con el
macro que hice es que cuando encuentra el primer producto realiza la
copia a la otra hoja y se detiene, es decir no sigue buscando los
demas artículo que cumplan con la condición. Les agradecería la
ayuda. El macro que estoy utilizando es este:

Sub impresion()
'Revisamos las celdas con un bucle (do while-loop) para ver cual
cumple con la condición
Sheets("Inventario").Select
Range("C2").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
'Si se cumple la condición se copia la fila y se pega en otra hoja
If ActiveCell.Offset(0, 15).Value = "adquirir" Or ActiveCell.Offset(0,
15).Value = "límite mínimo" Then

'Se selcciona el rango a la derecha
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
ActiveCell.Select
'va a la hoja de Lista de compra
Sheets("Lista de compra").Select
Range("a65536").Select

' Luego va a la última celda
Selection.End(xlUp).Select
' Por último se dezplaza una posición hacia abajo
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone

Exit Sub
End If
Loop

Sheets("Hoja1").Select
End Sub


Gracias de antemano
Roberto
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 15-07-2008, 05:46:41
Héctor Miguel
 
Mensajes: n/a
Predeterminado Re: do while loop

hola, Roberto !

> Tengo una hoja de cálculo que contiene informacion sobre productos de inventario
> en una columna a traves de una formula se determina si hay o no.
> Ahora bien, estoy creando un macro que verifica que productos es necesario adquirir o estan en el límite mínimo
> de manera de crear una lista para de productos necesarios.
> El problema con el macro que hice es que cuando encuentra el primer producto realiza la copia a la otra hoja y se detiene
> es decir no sigue buscando los demas artículo que cumplan con la condicion.
> Les agradeceria la ayuda. El macro que estoy utilizando es este: ...


1) la macro no continua porque tienes una instruccion "Exit Sub" ANTES de que termine su recorrido -((

2) si ya tienes un "identificador" en la columna R ("adquirir" o "limite minimo")...
por que no usas mejor un filtro avanzado y pasas a la otra hoja los datos con dichas "instrucciones" ?

3) lo unico que impide hacer una propuesta es la instruccion: -> Range(Selection, Selection.End(xlToRight)).Select
(y no creo que sea necesaria, si comentas de preferencia de cuales columnas estamos hablando y cuales son los titulos)

saludos,
hector.

__ el codigo expuesto __
Sub impresion()
'Revisamos las celdas con un bucle (do while-loop) para ver cual cumple con la condición
Sheets("Inventario").Select
Range("C2").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
'Si se cumple la condición se copia la fila y se pega en otra hoja
If ActiveCell.Offset(0, 15).Value = "adquirir" Or ActiveCell.Offset(0, 15).Value = "límite mínimo" Then
'Se selcciona el rango a la derecha
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
ActiveCell.Select
'va a la hoja de Lista de compra
Sheets("Lista de compra").Select
Range("a65536").Select
' Luego va a la última celda
Selection.End(xlUp).Select
' Por último se dezplaza una posición hacia abajo
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone
Exit Sub
End If
Loop
Sheets("Hoja1").Select
End Sub


Responder Con Cita
  #3 (permalink)  
Antiguo 15-07-2008, 14:26:23
Roberto
 
Mensajes: n/a
Predeterminado Re: do while loop

On 15 jul, 00:46, "Héctor Miguel" <NOhemiordiS...***PLShotmail.com>
wrote:
> hola, Roberto !
>
> > Tengo una hoja de cálculo que contiene informacion sobre productos deinventario
> > en una columna a traves de una formula se determina si hay o no.
> > Ahora bien, estoy creando un macro que verifica que productos es necesario adquirir o estan en el límite mínimo
> > de manera de crear una lista para de productos necesarios.
> > El problema con el macro que hice es que cuando encuentra el primer producto realiza la copia a la otra hoja y se detiene
> > es decir no sigue buscando los demas artículo que cumplan con la condicion.
> > Les agradeceria la ayuda. El macro que estoy utilizando es este: ...

>
> 1) la macro no continua porque tienes una instruccion "Exit Sub" ANTES deque termine su recorrido -((
>
> 2) si ya tienes un "identificador" en la columna R ("adquirir" o "limite minimo")...
> por que no usas mejor un filtro avanzado y pasas a la otra hoja los datos con dichas "instrucciones" ?
>
> 3) lo unico que impide hacer una propuesta es la instruccion: -> Range(Selection, Selection.End(xlToRight)).Select
> (y no creo que sea necesaria, si comentas de preferencia de cuales columnas estamos hablando y cuales son los titulos)
>
> saludos,
> hector.
>
> __ el codigo expuesto __
> Sub impresion()
> 'Revisamos las celdas con un bucle (do while-loop) para ver cual cumple con la condición
> Sheets("Inventario").Select
> Range("C2").Select
> Do While ActiveCell.Value <> Empty
> ActiveCell.Offset(1, 0).Select
> 'Si se cumple la condición se copia la fila y se pega en otra hoja
> If ActiveCell.Offset(0, 15).Value = "adquirir" Or ActiveCell.Offset(0, 15).Value = "límite mínimo" Then
> 'Se selcciona el rango a la derecha
> Range(Selection, Selection.End(xlToRight)).Select
> Selection.Copy
> ActiveCell.Select
> 'va a la hoja de Lista de compra
> Sheets("Lista de compra").Select
> Range("a65536").Select
> ' Luego va a la última celda
> Selection.End(xlUp).Select
> ' Por último se dezplaza una posición hacia abajo
> ActiveCell.Offset(1, 0).Select
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
> :=False, Transpose:=False
> Selection.Interior.ColorIndex = xlNone
> Exit Sub
> End If
> Loop
> Sheets("Hoja1").Select
> End Sub


Hola Hector gracias por tu interés
No creo que el error sea la instrucción end sub, toda vez que he
corrido la macro sin esta instrucción y el resultado es el mismo. En
cuanto a la instrucción: Range(Selection,
Selection.End(xlToRight)).Select simplemente copia la fila que incluye
el tipo de material, una descripción, unidades de medición y el
precio.
En tu propuesta de utilizar filtros, reconozco que me he paseado por
allí y creo que no tendría problemas pero estoy iniciandome en esto de
las macros y me gustaría poder ir desarrollando este conocimiento.

Gracias nuevamente
Responder Con Cita
  #4 (permalink)  
Antiguo 15-07-2008, 16:51:51
AnSanVal
 
Mensajes: n/a
Predeterminado Re: do while loop

Lo que te indica Héctor es totalmente acertado (aunque no lo creas).

Yo no se como están (exactamente) tus datos, pero prueba con esta modificación de tu código,
para que sea lo más cercano posible a lo que estás haciendo:

Sub impresion()
' Revisamos las celdas con un bucle (do while-loop) para ver cual cumple con la condición
Sheets("Inventario").Select
Range("C2").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
' Si se cumple la condición se copia la fila y se pega en otra hoja
If ActiveCell.Offset(0, 15).Value = "adquirir" Or _
ActiveCell.Offset(0, 15).Value = "límite mínimo" Then
' Se selcciona el rango a la derecha
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
' va a la hoja de Lista de compra
Sheets("Lista de compra").Select
Range("a65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone
End If
Sheets("Inventario").Select
Loop
'Sheets("Hoja1").Select
End Sub

Saludos: Antonio.
**********************
Hola Hector gracias por tu interés
No creo que el error sea la instrucción end sub, toda vez que he
corrido la macro sin esta instrucción y el resultado es el mismo. En
cuanto a la instrucción: Range(Selection,
Selection.End(xlToRight)).Select simplemente copia la fila que incluye
el tipo de material, una descripción, unidades de medición y el
precio.
En tu propuesta de utilizar filtros, reconozco que me he paseado por
allí y creo que no tendría problemas pero estoy iniciandome en esto de
las macros y me gustaría poder ir desarrollando este conocimiento.

Gracias nuevamente


Responder Con Cita
  #5 (permalink)  
Antiguo 15-07-2008, 19:56:16
Roberto
 
Mensajes: n/a
Predeterminado Re: do while loop

On 15 jul, 11:51, "AnSanVal" <ansan...***teleline.es> wrote:
> Lo que te indica Héctor es totalmente acertado (aunque no lo creas).
>
> Yo no se como están (exactamente) tus datos, pero prueba con esta modificación de tu código,
> para que sea lo más cercano posible a lo que estás haciendo:
>
> Sub impresion()
> ' Revisamos las celdas con un bucle (do while-loop) para ver cual cumple con la condición
> Sheets("Inventario").Select
> Range("C2").Select
> Do While ActiveCell.Value <> Empty
> *** ActiveCell.Offset(1, 0).Select
> *** ' Si se cumple la condición se copia la fila y se pega en otra hoja
> *** If ActiveCell.Offset(0, 15).Value = "adquirir" Or _
> *** *** *** ActiveCell.Offset(0, 15).Value = "límite mínimo" Then
> *** *** ' Se selcciona el rango a la derecha
> *** *** *** *** Range(Selection, Selection.End(xlToRight)).Select
> *** *** *** *** Selection.Copy
> *** *** ' va a la hoja de Lista de compra
> *** *** Sheets("Lista de compra").Select
> *** *** Range("a65536").End(xlUp).Offset(1, 0).Select
> *** *** *** Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
> *** *** *** :=False, Transpose:=False
> *** *** *** Selection.Interior.ColorIndex = xlNone
> *** End If
> *** Sheets("Inventario").Select
> Loop
> 'Sheets("Hoja1").Select
> End Sub
>
> Saludos: Antonio.
> **********************
> Hola Hector gracias por tu interés
> No creo que el error sea la instrucción end sub, toda vez que he
> corrido la macro sin esta instrucción y el resultado es el mismo. ***En
> cuanto a la instrucción: Range(Selection,
> Selection.End(xlToRight)).Select simplemente copia la fila que incluye
> el tipo de material, una descripción, unidades de medición y el
> precio.
> En tu propuesta de utilizar filtros, reconozco que me he paseado por
> allí y creo que no tendría problemas pero estoy iniciandome en esto de
> las macros y me gustaría poder ir desarrollando este conocimiento.
>
> Gracias nuevamente


Antonio y Hector, muchas gracias por su ayuda, el código presentado
funciona correctamente.

Muy amables

Roberto
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
LOOP REACTIVACION XP juan toro Newsgroup microsoft.public.es.windowsxp 0 06-05-2008 16:58:03
loop al insalar XP Martín Newsgroup microsoft.public.es.windowsxp 15 29-04-2008 13:34:50
Why not use a foreach loop instead of having a function calledarray_walk? adam.timberlake@gmail.com Newsgroup es.comp.lenguajes.php 4 09-01-2008 22:39:32
puedo construir una presentacion en loop con power point? Vittorio Newsgroup microsoft.public.es.powerpoint 2 14-08-2007 22:44:45
se tilda el juego y el sonido queda en un loop ayuda!!! martin Newsgroup microsoft.public.es.ageofempires 0 06-03-2004 06:12:21





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.