![]() |
| |||
| 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 |
| | ||||
| ||||
| |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
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 |