Eliminar un item en un ListBox seleccionándolo y apretándo la tecla Delete

07/06/2007 - 00:48 por Insumos | Informe spam
Hola Gente del Foro:

Supongamos que tengo un ListBox con varios items. Yo selecciono un item
mediante el mouse. Es posible borrar dicho item del ListBox (vía código)
apretando la tecla, por ejemplo, "Delete" o "Suprimir", y que en el ListBox
luego quede solo con los demás items? Y es posible, de paso, eliminar de una
hoja un registro que este asociado a dicho item todo con el mismo
procedimiento?
Se me ocurre que tal vez puede ser un código del tipo Private Sub
ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) en el que al
apretrar la tecla con un valor Ascii determinado haga lo que yo quiera. De
todas maneras es solo una idea ya que no se me ocurre como escribir bien el
código.
Desde ya muchas gracias!

Mariano

CONTADURIA

Preguntas similare

Leer las respuestas

#6 Ivan
13/06/2007 - 21:21 | Informe spam
hola de nuevo, Mariano

Range(Cells(fila, 91), Cells(fila, 97)).Delete



y, a riesgo de parecer pesado, (creo que) no estaria de mas que le
añadieses, tras el Delete y un espacio, esto: xlShiftUp

Range(Cells(fila, 91), Cells(fila, 97)).Delete xlShiftUp

solo por si las moscas

un saludo
Ivan
Respuesta Responder a este mensaje
#7 Insumos
13/06/2007 - 22:59 | Informe spam
Hola Ivan:

He agregado xlShiftUp a continuación del código, tal como sugeriste. No lo
he probado, pero estimo que su significado es que de esta manera nos
aseguramos que cuando el código borre el registro los otros "se corran"
hacia arriba y no hacia alguna otra dirección, estoy en lo cierto?
Muchas gracias por tu ayuda!
Saludos!

Mariano

"Ivan" escribió en el mensaje
news:

hola de nuevo, Mariano

Range(Cells(fila, 91), Cells(fila, 97)).Delete



y, a riesgo de parecer pesado, (creo que) no estaria de mas que le
añadieses, tras el Delete y un espacio, esto: xlShiftUp

Range(Cells(fila, 91), Cells(fila, 97)).Delete xlShiftUp

solo por si las moscas

un saludo
Ivan
Respuesta Responder a este mensaje
#8 Ivan
13/06/2007 - 23:41 | Informe spam
On 13 jun, 22:59, "Insumos" wrote:
Hola Ivan:

He agregado xlShiftUp a continuación del código, tal como sugeriste. No lo
he probado, pero estimo que su significado es que de esta manera nos
aseguramos que cuando el código borre el registro los otros "se corran"
hacia arriba y no hacia alguna otra dirección, estoy en lo cierto?
Muchas gracias por tu ayuda!
Saludos!

Mariano

"Ivan" escribió en el mensajenews:

hola de nuevo, Mariano

> Range(Cells(fila, 91), Cells(fila, 97)).Delete

y, a riesgo de parecer pesado, (creo que) no estaria de mas que le
añadieses, tras el Delete y un espacio, esto: xlShiftUp

Range(Cells(fila, 91), Cells(fila, 97)).Delete xlShiftUp

solo por si las moscas

un saludo
Ivan



hola Mariano (y ya me resulto pesado hasta a mi mismo)

aseguramos que cuando el código borre el registro los otros "se corran"
hacia arriba



efectivamente, y, aunque si no se pone en este caso, seguramente Excel
acertara en tus intenciones, (para mi gusto) mas vale prevenir

y, ahora una espinita que se me habia quedado en uno de los mensajes
anteriores, o mas bien una FE de ERRATAS/errores, por si a alguien le
diera por probarlo:

en el codigo de esta parte de la conversacion

2ª) en caso de ser de seleccion multiple y querer eliminar todos los
seleccionados deberias/podrias hacer un bucle inverso en busca de la
propiedad selected. pej. algo asi

For n = .Listcount - 1 to 0
if .selected(n) then .removeitem n
next




hay que añadir, tras For n= etc , la expresion Step -1 y quedaria asi:

For n = .Listcount - 1 to 0 Step -1
if .selected(n) then .removeitem n
next

bueno, me estaba dando patadas en ..., cada vez que lo veia

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida