Можно ли в VBA у контрола ListBox подписаться на событие click?

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток!
Возник трабл. В экселе через vba динамически генерирую ListBox на форме и его заполняю. Вопрос в том, возможно ли подписаться на событие click у динамически созданного контрола? Если да то как?

__________________
С уважением, Lepaj

Решение задачи: «Можно ли в VBA у контрола ListBox подписаться на событие click?»

textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font>
<font color="00AA00">' If you are adding an ActiveX control at run-time that is</font>
<font color="00AA00">' not referenced in your project, you need to declare it</font>
<font color="00AA00">' as VBControlExtender.</font>
<font color="blue">Dim</font> <font color="blue">WithEvents</font> ctlDynamic <font color="blue">As</font> VBControlExtender
<font color="blue">Dim</font> <font color="blue">WithEvents</font> ctlText <font color="blue">As</font> VB.TextBox
<font color="blue">Dim</font> <font color="blue">WithEvents</font> ctlCommand <font color="blue">As</font> VB.CommandButton

<font color="blue">Private</font> <font color="blue">Sub</font> ctlCommand_Click()
   ctlText.Text = <font color="teal">"You Clicked the Command button"</font>
<font color="blue">End</font> <font color="blue">Sub</font>

<font color="blue">Private</font> <font color="blue">Sub</font> ctlDynamic_ObjectEvent(Info <font color="blue">As</font> EventInfo)
   <font color="00AA00">' test for the click event of the TreeView</font>
   <font color="blue">If</font> Info.<font color="blue">Name</font> = <font color="teal">"Click"</font> <font color="blue">Then</font>
      ctlText.Text = <font color="teal">"You clicked "</font> & ctlDynamic.<font color="blue">object</font>.selecteditem.Text
   <font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Sub</font>

<font color="blue">Private</font> <font color="blue">Sub</font> Form_Load()
   <font color="blue">Dim</font> i <font color="blue">As</font> <font color="blue">Integer</font>
   <font color="00AA00">' Add the license for the treeview to the license collection.</font>
   <font color="00AA00">' If the license is already in the collection you will get</font>
   <font color="00AA00">' the run-time error number 732.</font>
   Licenses.Add <font color="teal">"MSComctlLib.TreeCtrl"</font>

   <font color="00AA00">' Dynamically add a TreeView control to the form.</font>
   <font color="00AA00">' If you want the control to be added to a different</font>
   <font color="00AA00">' container such as a Frame or PictureBox, you use the third</font>
   <font color="00AA00">' parameter of the Controls.Add to specify the container.</font>
   <font color="blue">Set</font> ctlDynamic = Controls.Add(<font color="teal">"MSComctlLib.TreeCtrl"</font>, _
                    <font color="teal">"myctl"</font>, Form1)
   <font color="00AA00">' set the location and size of the control.</font>
   ctlDynamic.Move <font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>2500</b></font>, <font color="darkblue"><b>3500</b></font>

   <font color="00AA00">' Add some nodes to the control.</font>
   <font color="blue">For</font> i = <font color="darkblue"><b>1</b></font> <font color="blue">To</font> <font color="darkblue"><b>10</b></font>
      ctlDynamic.<font color="blue">object</font>.nodes.Add Key:=<font color="teal">"Test"</font> & Str(i), Text:=<font color="teal">"Test"</font> _
                                        & Str(i)
      ctlDynamic.<font color="blue">object</font>.nodes.Add Relative:=<font color="teal">"Test"</font> & Str(i), _
                           Relationship:=<font color="darkblue"><b>4</b></font>, Text:=<font color="teal">"TestChild"</font> & Str(i)
   <font color="blue">Next</font> i
   
   <font color="00AA00">' Make the control visible.</font>
   ctlDynamic.Visible = True

   <font color="00AA00">' add a textbox</font>
   <font color="blue">Set</font> ctlText = Controls.Add(<font color="teal">"VB.TextBox"</font>, <font color="teal">"ctlText1"</font>, Form1)
   <font color="00AA00">' Set the location and size of the textbox</font>
   ctlText.Move (ctlDynamic.Left + ctlDynamic.<font color="blue">Width</font> + <font color="darkblue"><b>50</b></font>), _
                 <font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>2500</b></font>, <font color="darkblue"><b>100</b></font>

   <font color="00AA00">' Change the backcolor.</font>
   ctlText.BackColor = vbYellow

   <font color="00AA00">' Make it visible</font>
   ctlText.Visible = True

   <font color="00AA00">' Add a CommandButton.</font>
   <font color="blue">Set</font> ctlCommand = Controls.Add(<font color="teal">"VB.CommandButton"</font>, _
                    <font color="teal">"ctlCommand1"</font>, Form1)

   <font color="00AA00">' Set the location and size of the CommandButton.</font>
   ctlCommand.Move (ctlDynamic.Left + ctlDynamic.<font color="blue">Width</font> + <font color="darkblue"><b>50</b></font>), _
                    ctlText.Height + <font color="darkblue"><b>50</b></font>, <font color="darkblue"><b>1500</b></font>, <font color="darkblue"><b>500</b></font>

   <font color="00AA00">' Set the caption</font>
   ctlCommand.Caption = <font color="teal">"Click Me"</font>

   <font color="00AA00">' Make it visible</font>
   ctlCommand.Visible = True
<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы