[VBA] Dynamische acties toewijzen aan een object

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

  • The_Butler
  • Registratie: April 2001
  • Laatst online: 22-05 11:21
De titel klink mischien een beetje ingewikkeld maar dat is mijn probleem denk ik ook. Ik heb een userform in Excel welke data inleest van een textfile, deze aan de gebruiker laat zien en die dan met of zonder aanpassingen van de gebruiker de bende print.

Ik gebruik voor het dynamisch aanmaken van mijn textbox/combobox en checkbox gebruik ik de volgende code:
Visual Basic:
1
2
3
4
5
6
Set C = MultiPage1.Pages(FormNumber).Controls.Add("Forms.TextBox.1", (FormNumber & "_" & ItemCounter), True)
                C.Font.Size = TextSize ' tagname
                C.Left = 10
                C.Top = TopCounter
                C.Width = 80
                C.Height = 15.5

Deze code staat in een lus, iedere nieuwe regel in mijn text bestandje doorloop de lus zodat een nieuwe regel met 7 objecten wordt gemaakt. Het toewijzen van de tekst gebeurt iets later.

Mijn probleem: Het laatste object gaat een combobox worden met de opties:
deze regel verwijderen
een nieuwe regel invoegen
regel negeren tijdens printen
deze regel normaal printen

Normaal zou je in een userform een stukje code aanmaken dat er zo uit ziet:
Visual Basic:
1
2
3
4
Private Sub Combobox1_KeyDown()
    Als combobox1 de waarde "deze regel verwijderen" heeft dan
    Verwijder deze regel
end Sub

Maar nu ik dynamisch mijn combobox aanmaak kan ik deze code niet gebruiken, hoe bind ik een event aan mijn dynamische combobox?

ik heb de help geprobeerd in excel, en msdn, daar blijf ik voorlopig nog even doorzoeken, advies van jullie kant wordt erg gewaardeerd.

modbreak: wonderlijk spul he, die [code=vb] tag :)

[ Voor 6% gewijzigd door curry684 op 27-06-2003 22:45 ]

at your service


  • The_Butler
  • Registratie: April 2001
  • Laatst online: 22-05 11:21
Ik heb het na anderhalve dag zoeken nu via google gevonden, mischien is t leuk for the search als ik het even paste. Kan ik meteen de wondere wereld van de [code=VB] tag betreden ;)

na het zoeken op "create event runtime vba" kwam ik terecht op deze site: http://www.j-walk.com/ss/excel/eee/

en hier staat in Issue No. 15 (December 22, 1999): Add an event procedure to a control inserted at runtime.

Op de site staat "by Stephen Bullen", maar of dit dege is die code heeft geschreven of dat het de gene is die de vraag heeft gesteld weet ik niet.

Het idee is dat ik een class moet aanmaken met de volgende code:

Class heet "CBtnEvents"
Visual Basic:
1
2
3
4
5
6
7
Public WithEvents oBtn As MSForms.CommandButton

Private Sub oBtn_Click()

'... Your code

End Sub


In mijn form is de volgende code nodig:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim oEvents As New Collection

Private Sub Userform_Initialize()

Dim oBtnEvts As CBtnEvents

Set oBtnEvts = New CBtnEvents

Set oBtnEvts.oBtn = 
FrmFieldShow.Controls.Add(bstrprogid:="forms.commandbutton.1", _
        Name:="CmdToG", Visible:=True)

        With oBtnEvts.oBtn
            .Top = 50
            .Height = 25
            .Width = 100
            .Left = (FrmFieldShow.Width / 2 - (100 / 2))
            .Caption = "Ok"
         end with

oEvents.Add oBtnEvts

End Sub


Ik ga weer verder met me'n code, k heb weer wat geleerd vandaag.

at your service