View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Tushar Mehta Tushar Mehta is offline
external usenet poster
 
Posts: 1,071
Default Using For/Next Loop To Generate 4 CommandButtons On A UserForm Results In A Runtime Error 91

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

In article ,
says...
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.commandbutto n.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