Hola, tengo una aplicación creada en excel, con dos userform, uno para introducir datos y el otro para consultar y en este ultimo al poner un nombre en text box 1 me rellena el solo los datos de los demás text box . El problema es cuando un
La consulta te quedó incompleta, así no recibirás respuesta. Mientras te recomiendo mi manual de formularios
Hola: Perdón no se lo que paso con el mensaje anterior, el tema es así tengo un libro de excel, con varias hojas la hoja cliente, la hoja articulo y varias más aun sin definir, en la hoja cliente tengo unos rangos de celdas que van de B11 a O11 en esta linea desde un userform voy introduciendo los datos y al pulsar un botón de comando me inserta una linea nuev en b11, pues bien he construido otro userform2 en el cual tengo test box que se rellenan al seleccionar en un list box el cliente elegido, lo que quiero es que me ordene los datos del list box alfabéticamente, y he creado esta macro pero solo me ordena hasta la linea 30 y aunque le modifique el rango no funciona bien, y si le pongo un rango que no este en la vista de la hoja activa el total de los datos me los baja muy abajo no se porque motivo. He modificado lo que esta en negrita originalmente era B10:O30 y me organizaba solo hasta la linea 30 y he probado a ponerle más rango pero no funciona bien. Un saludo Sub ordenalfabeto() ' ' ordenalfabeto Macro ' ' Range("B11:B2013").Select ActiveWorkbook.Worksheets("CLIENTE").Sort.SortFields.Clear ActiveWorkbook.Worksheets("CLIENTE").Sort.SortFields.Add Key:=Range( _ "B10:B2013"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("CLIENTE").Sort.SortFields.Clear ActiveWorkbook.Worksheets("CLIENTE").Sort.SortFields.Add Key:=Range( _ "B10:B2013"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal End Sub
Bien, tu modo de ordenar hará que solo se ordene la col B y luego ya no tenga relación cada registro con sus col aledañas. Para encontrar el fin de rango utilizo un variable, que busca de abajo hacia arriba hasta encontrar un registro. Ese es el fin del rango. Sub ordenalfabeto() ' ' ordenalfabeto Macro fin = Range("B65536").End(xlUp).Row Range("B10").Select 'esta fila quizás sea de títulos 'esta es la instrucción más reducida y ordena bien Range("B11:O" & fin).Sort Key1:=Range("B10"), Order1:=xlAscending End Sub La instrucción completa obtenida con la grabadora contempla más opciones, como indicarle que existe un titulo, etc. Range("B11:O" & fin).Sort Key1:=Range("B10"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Sdos. No dejes la consulta sin finalizar si el tema quedó resuelto
Hola, si ordenar ordena pero lo que comentaba porque en esta captura antes de ejecutar la macro los datos están arriba http://img525.imageshack.us/img525/9822/capturainicial.jpg Y después de ejecutar Sub ordenalfabeto() ' ' ordenalfabeto Macro fin = Range("B65536").End(xlUp).Row Range("B10").Select 'esta fila quizás sea de títulos 'esta es la instrucción más reducida y ordena bien Range("B11:O" & fin).Sort Key1:=Range("B10"), Order1:=xlAscending End Sub http://img17.imageshack.us/img17/7907/captura2kc.jpg Aparecen así en la hoja y en el formulario en el list box tengo que darle mucho a la barra de desplazamiento lateral para que aparezcan los datos gracias de nuevo
Seguramente te han quedado datos hacia abajo, por eso la variable fin (o tu rango B11:B2013) toma hasta allí para ordenar. O quizás tu col B tiene fórmulas, por lo que aunque no se vean 'tiene datos', y el fin de rango llega hasta más allá de la 200 Limpiá tu tabla desde la última fila con datos (a partir de la 34 según la imagen) seleccionando desde el encabezado de filas y 'eliminar'. Ahora ejecutá la rutina nuevamente. Si necesitas mantener fórmulas en col B, tendrás que pasar el rango de datos de la col B (*) a otra hoja para poder ordenarla normalmente y con ese listado llenar tu control. Sdos Elsa
Hola, creo que va bien, he hecho lo que me comentabas Elsa y creo que no va a fallar voy a introducir datos de prueba un par de días y te comento y cerraremos el tema, muchas gracias de nuevo. Un saludo