{"text_format":"1","workbook":"xlsx","n_sheets":1,"sheets":["Ej1"],"not_rendered":{"charts":0,"images":0,"macros":1,"external_links":0,"defined_names":1,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"Ej1","index":0,"n_rows":90,"n_cols":9,"rows_kept":90,"cut":false,"hidden":false,"merged":[[47,0,48,0],[0,1,0,2],[3,2,3,9],[0,4,0,7],[1,1,1,2],[1,3,1,8]]}
[null,"EJEMPLOS",null,"1-","Uso de WHILE…. WEND                                                               ",null,null,null,"RUTINAS EN MÓDULO 1"]
[null,"OBJETIVO:",null,"Recorrer un rango mientras se cumpla una o más condiciones."]
[]
["1_1",null,"Veamos la siguiente tabla. En la col B pareciera que la primer fila libre es la fila 14, pero veamos si alguna  de las instrucciones habituales para encontrar esta fila nos devuelve ese valor. Sabemos que la instrucción: "]
[null,null,"fily = Range(\"B8\").End(xlDown).Row + 1",null,null,null,"nos devuelve la 1er fila libre desde arriba."]
[null,null,"filx = Range(\"B22\").End(xlUp).Row + 1",null,null,null,"nos devuelve la 1er fila libre desde abajo"]
[]
[null,"NRO.REG.",null,"ITEM","VALOR"]
[null,100,"M","blusa blanca",250]
[null,{"$f":"+IF(D10=\"\",\"\",B9+1)","v":101},"M","blusa floreada",280]
[null,{"$f":"+IF(D11=\"\",\"\",B10+1)","v":102},"H","campera jean",430]
[null,103,"H","pantalón niño",190]
[null,104,"M","campera mujer"]
[null,""]
[null,""]
[null,""]
[null,""]
[null,""]
[null,""]
[null,""]
[null,""]
[]
[null,"¿Porqué no nos dá el valor 14? Porque la celda no está vacía, tiene una fórmula. "]
[null,"Entonces, para casos así, utilizaremos un bucle que recorrerá esta columna hasta encontrar una celda con valor = \"\""]
[]
[null,"Sintaxis"]
[null,null,"While condición"]
[null,null,"[intrucciones]"]
[null,null,"Wend"]
[]
[null,"La rutina para este caso será:"]
[]
[null,null,null,"Sub ejemplo1_1()"]
[null,null,null,"'x Elsamatilde"]
[null,null,null,"Range(\"B8\").Select"]
[null,null,null,"'recorre la col B a partir de fila de títulos."]
[null,null,null,"While ActiveCell <> \"\""]
[null,null,null,"'recorre la col mientras la celda sea <> vacía."]
[null,null,null,"ActiveCell.Offset(1, 0).Select"]
[null,null,null,"Wend"]
[null,null,null,"'envía mensaje con el nro de fila activa "]
[null,null,null,"MsgBox ActiveCell.Row"]
[null,null,null,"End Sub"]
[]
[null,"NOTA:","Aquí solo se intenta conocer cuál es la 1er fila libre, no ocuparla (ya que tiene fórmula)."]
[]
[]
["1_2","En este caso recorremos una col de la misma tabla hasta encontrar un valor --------- (ver Tip)."]
[null,"Se busca la ubicación del Item 'campera'. UCASE nos permite reconocer el texto tanto en mayúsc o minúsc."]
[]
[null,null,null,"Sub ejemplo1_2()"]
[null,null,null,"'x Elsamatilde"]
[null,null,null,"Range(\"D8\").Select"]
[null,null,null,"'recorre la col D a partir de fila de títulos hasta el fin de rango."]
[null,null,null,"While ActiveCell.Row <= Range(\"A65536\").End(xlUp).Row"]
[null,null,null,"'se controla si el Item comienza con 'Campera'"]
[null,null,null,"If UCase(Left(ActiveCell.Value, 7)) = \"CAMPERA\" Then"]
[null,null,null,"    'coinciden los textos, envia mensaje y finaliza"]
[null,null,null,"    MsgBox \"El Item se encuentra en fila \" & ActiveCell.Row"]
[null,null,null,"    Exit Sub"]
[null,null,null,"End If"]
[null,null,null,"'si no coincide, pasa a la fila sgte y repite el bucle"]
[null,null,null,"ActiveCell.Offset(1, 0).Select"]
[null,null,null,"Wend"]
[null,null,null,"End Sub"]
[]
[null,"TIP:","Buscamos el registro que cumpla 2 condiciones."]
[null,null,"Además del texto 'campera' se busca que sea del tipo 'M'."]
[]
[null,null,null,"Sub ejemplo1_2Tip()"]
[null,null,null,"'x Elsamatilde"]
[null,null,null,"Range(\"D8\").Select"]
[null,null,null,"'recorre la col D a partir de fila de títulos hasta el fin de rango."]
[null,null,null,"While ActiveCell.Row <= Range(\"A65536\").End(xlUp).Row"]
[null,null,null,"'se controla si el Item comienza con 'Campera' y sea \"H\""]
[null,null,null,"If UCase(Left(ActiveCell.Value, 7)) = \"CAMPERA\" And ActiveCell.Offset(0, -1) = \"M\" Then"]
[null,null,null,"    'coinciden los textos, envia mensaje y finaliza"]
[null,null,null,"    MsgBox \"El Item se encuentra en fila \" & ActiveCell.Row"]
[null,null,null,"    Exit Sub"]
[null,null,null,"End If"]
[null,null,null,"'si no coincide, pasa a la fila sgte y repite el bucle"]
[null,null,null,"ActiveCell.Offset(1, 0).Select"]
[null,null,null,"Wend"]
[null,null,null,"'si llegó hasta aquí es porque no se encontró coincidencias."]
[null,null,null,"MsgBox \"No se encuentra el registro buscado\", , \"SIN COINCIDENCIAS\""]
[null,null,null,"End Sub"]
[]
[]
[null,"NOTA:","Recordar que las condiciones pueden ser establecidas como resultado de algún "]
[null,null,"cálculo, como contenido de celdas o solicitandolas por InputBox."]