This code works for me
Option Explicit
'
Dim WithEvents Cmd1 As CommandButton
'
Private Sub Form_Load()
Set Cmd1 = Controls.Add("vb.commandbutton", "Cmd1")
Cmd1.Width = 2000
Cmd1.Top = Me.Height / 2 - Cmd1.Height / 2 - 100
Cmd1.Left = Me.Width / 2 - Cmd1.Width / 2 - 100
Cmd1.Caption = "Dynamic Button"
Cmd1.Visible = True
End Sub
'
Private Sub Cmd1_click()
MsgBox "I have been Created Dynamically at Run-time", _
, "Dynamic Controls"
End Sub
'

Works with no problems for me, I hope this code works for you, You can also use indexes create one command button and set the index to zero then on form load or whenever you want it to show
Load Command1(1)
Command1(1).Caption = "command2"
Command1(1).Left = Command1(0).Left + Command1(0).Width
Command1(1).Top = Command1(0).Top
Command1(1).Visible = True
You get the point, good luck, I use indexes myself lots of times when I have a bunch of controls it loads faster this way, enjoy.