¿Como referirme a un listbox de un formulario, sabiendo como se llama? Vba en Excel

A tod@s!

Tengo un formulario AddPreguntaAuditoria que ha sido abierto desde otro llamado PreguntasdeAuditorias con diferentes ListBox .

El nombre del ListBox al que quiero referirme lo tengo en una variable publica (string) llamado DatoExport1.

Al ejecutar un evento en el formulario AddPreguntaAuditoria quiero  vaciar el ListBox.name=DatoExport1 del formulario PreguntasdeAuditorias .

Esto mismo:

PreguntasdeAuditorias. ListAuditoriaPersonal. Clear

Y lo que quiero es sustituir ListAuditoriaPersonal por el valor de DatoExport1

PreguntasdeAuditorias. DatoExport1. Clear

¿Como puedo hacerlo...

2 Respuestas

Respuesta
2

Como dice un refrán: una imagen vale más que ...

Como dices que ya partes con una variable pública ('... tengo en una variable publica (string) llamado DatoExport1...) esta variable estará declarada en un módulo.

Public dataExport1 As String

Y aquí mi ejemplo: un formulario con varias listas (ListAuditoriaPersonal, ListAuditoriaCobros, etc)

Al presionar cualquiera de los botones amarillos se llama a otro UF indicandole con qué lista se relacionará (o se limpiará en este caso). Estas son las macros de los botones amarillos:

Private Sub CommandButton2_Click()    'botón Cliente
dataExport1 = "ListAuditoriaPersonal"
AddPreguntaAuditoria.Show
End Sub
Private Sub CommandButton3_Click()    'botón Cobranzas
dataExport1 = "ListAuditoriaCobros"
AddPreguntaAuditoria.Show
End Sub

En el segundo formulario, no mencionas el evento. Yo utilicé el doble clic en un Listbox ya que luego aprovecho para enviarle ese valor seleccionado al primer UF. 

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'limpiar la lista del UF PreguntasdeAuditorias
PreguntasdeAuditorias.Controls(dataExport1).Clear
'OPCIONAL: enviar el valor seleccionado al uf principal
PreguntasdeAuditorias.TextBox1 = ListBox1.List(ListBox1.ListIndex)
End Sub

Respuesta
1

En tu formulario PreguntasdeAuditorias

Public DatoExport1 As String
Private Sub UserForm_Activate()
  DatoExport1 = ListAuditoriaPersonal.Name
End Sub

---

En el evento de tu formulario AddPreguntaAuditoria

  Dim nombre As String
  nombre = PreguntasdeAuditorias.DatoExport1
  PreguntasdeAuditorias. Controls(nombre). Clear

Pero te presento una mejor manera:

En tu formulario PreguntasdeAuditorias

Public DatoExport1 As MSForms.ListBox
Private Sub UserForm_Activate()
  Set DatoExport1 = ListAuditoriaPersonal
End Sub

---

En el evento de tu formulario AddPreguntaAuditoria

 PreguntasdeAuditorias. DatoExport1. Clear

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas