Using For/Next Loop To Generate 4 CommandButtons On A UserForm Results In A Runtime Error 91

D

Donna

Folkes,
My loop generates the buttons Ok but when I try and debug.print a
position property of the button I get :-
'Run-time error 91
Object Variable or with block variable not set'

I cannot see what is wrong but it must be something to do with the way
I am using Set and With within the loops. Can anybody point me in the
right direction.

Thanks for your help...again!

Here's my code:-

Option Explicit
Option Base 1
Sub delete()

Dim TempForm, Capn(), NewCommandButton() As Variant ' UserForm
Dim NewCommandButton1 As MSForms.CommandButton ' RC Variant
Dim NewCommandButton2 As MSForms.CommandButton ' RV Variant
Dim NewCommandButton3 As MSForms.CommandButton ' LC Variant
Dim NewCommandButton4 As MSForms.CommandButton ' LV Variant
Dim i As Integer, LeftPos As Integer

Set TempForm = ThisWorkbook.VBProject.VBComponents.Add(3)

'Create and Postion the Variant Buttons
i = 1: Capn = Array("A", "B", "C", "D")
NewCommandButton = Array("NewCommandButton1", "NewCommandButton2",
"NewCommandButton3", "NewCommandButton4")
LeftPos = 15
For i = 1 To UBound(Capn)
Set NewCommandButton(i) =
TempForm.Designer.Controls.Add("forms.commandbutton.1")
With NewCommandButton(i)
.Caption = Capn(i): .Top = 6: .Left = LeftPos: .Width = 25:
..Height = 17
End With
LeftPos = LeftPos + 30
Next i

Debug.Print NewCommandButton1.Left '********OK Until
Here**********
End Sub
 
B

Bob Phillips

Donna,

You haven't changed the names of the buttons, so they are still called
CommandButton1, etc.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
T

Tushar Mehta

From what I can tell the NewCommandButton=Array() statement is
redundant since the Set NewCommandButton(i)=...replaces the previous
content.

That leaves one immediate operational problem. When you refer to
Debug.Print NewCommandButton1.Left
where exactly did you initialize the NewCommandButton1 variable?
Either do so, or use NewCommandButton(1)

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions
 
D

donna.gough

Bob,
But should I have to rename them?
If I was just generating the one commandbutton without the loop I could
then use the debug.print without changing the name so why do I need to
now?
Donna
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top