title: Making userform with vba, commandbutton does not work
body: <p>First of all I'm from Holland, so sorry for my bad English.</p>
  
  <p>I have an excelsheet with a lot of records (from 10 to 1000, depending on the user). My idea was to dynamically make a userform where a row of textboxes per record is created. Then I want to make a commandbutton per record to change the data in the records. At last I add some code to the userform to define the actions executed when the commandbutton is clicked. </p>
  
  <p>The textboxes and the commandbutton are visible when the userform is shown, but nothing happens when I click the commandbutton, despite the fact that the code is created at the userform. </p>
  
  <p>I have an examplefile, but I don't know how to upload it here. </p>
  
  <p>Underneath is the code (placed under the userform)</p>
  
  <pre><code>Private Sub UserForm_Initialize()
  Dim cCntrl As Control
  Dim txtB1 As Control
  Dim cmb1 As Control
  
  'Deleting lines doesn't work yet
  'With ThisWorkbook.VBProject.VBComponents("EFRIS").CodeModule
  'x = .countoflines
  'y = Sheets("Data").Range("A3").Value
  'If x &gt; y Then .DeleteLines y, x - y
  'x = .countoflines
  'End With
  '
  'Sheets("data").Range("A3") = x
  
  'locatie van de userform in het midden van het scherm plaatsen
  'breedte van de userform aanpassen aan de breedte van het scherm
  'hoogte van de userform aanpassen aan de hoogte van het scherm
  a = Application.Width
  b = Application.Height
  EFRIS.Left = 5
  EFRIS.Width = a - 25
  EFRIS.Height = b - 50
  
  'e = de .left van de eerste tekstbox
  e = 100
  
  'f = het aantal records in de sheet ("FRIS")
  f = Sheets("FRIS").Range("B10000").End(xlUp).Row - 2
  
  'a is de loop in rijen
  For a = 1 To f
  'b = de loop in kolommen
  For b = 1 To 8
  If b = 1 Then c = "a"
  If b = 2 Then c = "b"
  If b = 3 Then c = "c"
  If b = 4 Then c = "d"
  If b = 5 Then c = "e"
  If b = 6 Then c = "f"
  If b = 7 Then c = "g"
  If b = 8 Then c = "h"
  'If b = 9 Then c = "i"
  'If b = 10 Then c = "j"
  
  'breedte per textbox
  If b = 1 Then d = 30
  If b = 2 Then d = 100
  If b = 3 Then d = 100
  If b = 4 Then d = 130
  If b = 5 Then d = 150
  If b = 6 Then d = 150
  If b = 7 Then d = 150
  If b = 8 Then d = 50
  'If b = 9 Then d = 100
  'If b = 10 Then d = 30
  
  Set txtB1 = Controls.Add("Forms.TextBox.1", "TB" &amp; a &amp; b, True)
  With txtB1
      .Height = 20
      .Width = d
      .Left = e
      .Top = 5 + (a * 20)
      .Value = Sheets("FRIS").Range("A2").Offset(a, b)
      .Locked = True
  End With
  
  '.left van de textbox
  e = e + d
  
  Next
  'E resetten naar 100
  e = 100
  
  Set cmb1 = Controls.Add("Forms.CommandButton.1")
  With cmb1
      .Caption = "Wijzigen"
      .Height = 20
      .Width = 90
      .Left = 5
      .Top = 5 + (a * 20)
  End With
  
  With ThisWorkbook.VBProject.VBComponents("EFRIS").CodeModule
  x = .countoflines
  Sheets("Data").Range("A3") = x
  '.InsertLines x + 1, "Private Sub " &amp; cmb1.Name &amp; "_Click()"
  '.InsertLines x + 2, "AStart.show"
  '.InsertLines x + 3, "Unload Me"
  '.InsertLines x + 4, "End Sub"
  End With
  
  
  'g bepaald de totale hoogte van de userform voor de scrollbar
  g = 20 + a * 20
  Next
  
  EFRIS.ScrollBars = fmScrollBarsVertical
  EFRIS.ScrollTop = 0
  EFRIS.ScrollHeight = g
  
  EFRIS.Show
  
  End Sub
  </code></pre>