Siguiendo con la serie de post sobre ListBox y cómo eliminar elementos, hoy veremos cómo eliminar celdas de la hoja de cálculo desde un ListBox.
Nuestros datos:
Disponemos de una Tabla en el rango A1:A7, tabla llamada 'TblPaises'.
Por otro lado, nuestro formulario contiene una etiqueta/label y un ListBox llamado: LstPais.
Con el evento _Initialize asociado al UserForm cargaremos el ListBox empleando la propiedad .RowSource.
A continuación vinculado al evento _DblClick del ListBox controlaremos la acción de eliminado de celdas en la hoja de cálculo.
Así pues añadimos las siguientes macros dentro de la ventana de código de nuestro UserForm en nuestro proyecto de VB:
Al ejecutar nuestro formulario podemos comprobar cómo al hacer doble clic sobre los elementos del ListBox se eliminan los registros de la tabla 'TblPaises' en la hoja de cálculo, tal como esperábamos...
Nuestros datos:
Disponemos de una Tabla en el rango A1:A7, tabla llamada 'TblPaises'.
Por otro lado, nuestro formulario contiene una etiqueta/label y un ListBox llamado: LstPais.
Con el evento _Initialize asociado al UserForm cargaremos el ListBox empleando la propiedad .RowSource.
A continuación vinculado al evento _DblClick del ListBox controlaremos la acción de eliminado de celdas en la hoja de cálculo.
Así pues añadimos las siguientes macros dentro de la ventana de código de nuestro UserForm en nuestro proyecto de VB:
Private Sub UserForm_Initialize() 'cargamos el listbox con los valores de la Tabla en la hoja de cálculo Me.LstPais.RowSource = "TblPaises[paises]" End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub LstPais_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim sEncontrar As String, rngBusqueda As Range 'trabajamos sobre el elemento del listbox seleccionado Select Case Me.LstPais.Value 'en caso haya alguno seleccionado Case Is <> "" 'definimos el valor/pais a encontrar sEncontrar = Me.LstPais.Value 'determinamos dónde buscar 8en qué rango) With ActiveSheet.Range("TblPaises[paises]") Set rngBusqueda = .Find(what:=sEncontrar) 'si se ha encontrado el valor/país If Not rngBusqueda Is Nothing Then 'marcamos esa celda en la hoja de cálculo 'y eliminamos desplazando el resto hacia arriba rngBusqueda.Delete shift:=xlUp End If End With 'para el resto de casos salimos del procedimiento Case Else Exit Sub End Select 'volvemos a cargar el ListBox con el resultado de la hoja de cálculo Me.LstPais.RowSource = "TblPaises[paises]" End Sub
Al ejecutar nuestro formulario podemos comprobar cómo al hacer doble clic sobre los elementos del ListBox se eliminan los registros de la tabla 'TblPaises' en la hoja de cálculo, tal como esperábamos...
master como siempre !!!
ResponderEliminar;-)
Eliminar