Limpiar contenido de combobox antes de ejecutar una macro

Les consulto como limpiar un combobox antes de ejecutar una macro que lo que realiza es mostrar los archivos PDF que se encuentren en una carpeta seleccionada, pues me sigue mostrando los archivos de la seleccion anterior. La macro que permite seleccionar las carpetas y llenar el combobox es la siguiente:

Dim Path As String
Private Sub CommandButton1_Click()
'Llamar explorador de carpetas desde boton dentro del formulario
On Error Resume Next
DisplayAlerts = True
Application.ScreenUpdating = True
Dim Fila As Integer
Fila = 2
'Se crea FileSystemObject que da acceso al sistema de archivos del sistema
Set FSO = CreateObject("Scripting.FileSystemObject")
'Indicamos la ruta de donde vamos a obtener
Ruta = "C:\Users\Gambatte\Downloads"
Path = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", &H100, Ruta).Items.Item.Path
 If Path = "" Then
 'MsgBox "No has seleccionado ningún directorio, selecciona un directorio .", , "AVISO"
 Exit Sub
 End If
'Definimos variables para determinar nombre de archivos y subcarpetas
Set Carpeta = FSO.GetFolder(Path)
Set ficheros = Carpeta.Files
'Archivos
For Each ficheros In ficheros
    b = ficheros.Name
    documento = ficheros.Path
    extension = UCase(FSO.GetExtensionName(documento))
    If extension = "PDF" Then ComboBox1.AddItem b
    'b: Range("b1") = Path & "\" & b
'ComboBox1.AddItem b
Next ficheros
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub ComboBox1_Change()
    Dim Nombre As String
    Dim RangoMatriz As Range
    On Error GoTo ManejadorErrores
    Me.WebBrowser1.Navigate (Path & "\" & Me.ComboBox1.Value)
    Exit Sub
ManejadorErrores:
    MsgBox "Ha ocurrido un error: "
End Sub

2 Respuestas

Respuesta
1

Hay dos opciones:

ComboBox1.value =""

ComboBox1.clear

En caso que tu form se cierre al ejecutar la macro entonces deberás colocarlo dentro del Sub UserForm_Initialize()

Caso contrario si corres la macro y se ejecuta pero no de cierra el form entonces debes de colocarlo dentro de la rutina después de la línea de tu mensaje de error

Respuesta
1

La instrucción en tu caso es combobox1. Clear, la puedes poner al principio de la macro que hace la carga al combobox.

James, si coloco al principio de la macro que carga el combobox en la primera carga todo va bien, al elegrir la segunda carpeta me bloquea el archivo. ¿Qué podrá ser?

Saludos.

¿Te bloquea el archivo como?, hice varias pruebas con tu macro cargando información de diferentes carpetas y ni me muestra problemas, se borra la selección anterior y se carga la nueva, que supongo es lo que buscas

Hola James, mucho gusto, escribo combobox1. Clear luego de Private Sub CommandButton1_click() para que borre el contenido antes de correr la macro

Private Sub CommandButton1_Click()
combobox1.clear 
'Llamar explorador de carpetas desde boton dentro del formulario
On Error Resume Next
DisplayAlerts = True
Applica

Si bien no me muestra un error pero no me deja realizar una segunda seleccion de la carpeta y no me deja hacer nada con Excel hasta que no voy a Administrador de programas. ¿donde puntualmente va la instrucción "combobox1.clear?

Gracias nuevamente.

Yo lo puse así y me funciona sin ningún problema

Set ficheros = Carpeta.Files
'Archivos
For Each ficheros In ficheros
    b = ficheros.Name
    documento = ficheros.Path
    extension = UCase(FSO.GetExtensionName(documento))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas