View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
CT[_2_] CT[_2_] is offline
external usenet poster
 
Posts: 4
Default Thanks, Tom. Creating buttons using VBA

Thanks, Tom! Sorry to make you re-hash this bit.
Tom Ogilvy wrote in message
...
This is how I dim'd cmbButton in my example

Dim cmbButton As MSForms.CommandButton

that works

You changed it to the more appealing cmdButton, but dim't it as object.
This doesn't work. You need to Dim it as MSForms.Commandbutton

Dim cmdButton as MSForms.CommandButton

If it did work, there would be no reason to have the separate variable
cmdButton. It is only for the Name property that this is necessary.

--
Regards,
Tom Ogilvy

"CT" wrote in message
k.net...
Thanks, Tom. If you could, a bit more help, please ...

Tried the following ...

Sub DA_Create_CMDButtons()
Dim OLEButton As OLEObject
Dim cmdButton As Object

With Range("I1")
Set OLEButton =
ActiveSheet.OLEObjects.Add(ClassType:="Forms.Comma ndButton.1", _
link:=False, _
displayasicon:=False, _
Left:=.Left, _
Top:=.Top, _
Width:=.Width, _
Height:=.Height)
End With
Set cmdButton = OLEButton.Object
cmdButton.Caption = "New"
cmdButton.Name = "cmdNew"
MsgBox ("Here")
End Sub

This pastes the command button nicely inside cell I1 (Thanks, Patrick),
but pukes at cmdButton.Name = "cmdNew" <<< with an
Object doesn't support this property or method <<<.

Now I could swear a button has a Name property, but it is set off in
parenthesis in the properties window. Why is that, and how do I change

it?

More thanks,
-Tim

Tom Ogilvy wrote in message
...
Just to add another:

Recording a macro is pretty useful in this case -

ActiveSheet.OLEObjects.Add(ClassType:="Forms.Comma ndButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=144.75, _
Top:=88.5, _
Width:=71.25,
Height:=18).Select

You can drop the select

Sub Macro2()
Dim cmbButton As MSForms.CommandButton
Dim oButton As OLEObject

Set oButton = _
ActiveSheet.OLEObjects.Add(ClassType:="Forms.Comma ndButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=144.75, _
Top:=88.5, _
Width:=71.25, _
Height:=18)
oButton.Top = 0
Set cmbButton = oButton.Object
cmbButton.Caption = "MyButton"

End Sub

You could set the top property in the ADD method. I have left it as
recorded and then moved the button just to illustrate. The Top

property
is
an attribute of the OleObject container. The commandbutton itself is

the
OleObject.Object (thus my use of two variables).

--
Regards,
Tom Ogilvy




"CT" wrote in message
nk.net...
I am trying to create a button and put it onto a spreadsheet using

VBA.

Dim cmdButton As Object
Set cmdButton = CreateObject("Forms.CommandButton.1")
cmdButton.Top = 0

Run time error 438;
Object: doesn't support this property or method
Occurs on cmdButton.Top = 0

I am trying to set the position of the top of the new command

button.
Where am I going wrong?

Thanks,
Tim