ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   createing a dynamic array of buttons with captions loaded from she (https://www.excelbanter.com/excel-discussion-misc-queries/144879-createing-dynamic-array-buttons-captions-loaded-she.html)

ouch

createing a dynamic array of buttons with captions loaded from she
 
Yeah, I need to create a pop up box of sorts that has a dynamic array of
buttons who's captions are loaded from a worksheet column.

any ideas?

JLatham

createing a dynamic array of buttons with captions loaded from she
 
Well, you could create just an empty UserForm with the VB Editor and use its
_Activate() event to populate it with buttons. The code below shows how that
can be done and how to obtain the captions from a list on a sheet. What it
doesn't show are things like:
making sure the form is tall enough to handle all the buttons - you could
either size it large enough to hold all possible ones or dynamically size it
during the same event.
assigning actions to take when each of the new buttons is clicked on the form.

For what it's worth to you, here's the basic 'seed' code to get you started.

Private Sub UserForm_Activate()
Dim listRange As Range
Dim rowPointer As Integer
Dim ctrlName As String
Dim nextTopPosition As Integer
'change to name of form with list for captions
'and the starting cell on the sheet with the list
Set listRange = Worksheets("Sheet1").Range("A1")
Do While Not IsEmpty(listRange.Offset(rowPointer, 0))
'names will be like:
' cmd_00
' cmd_01
' cmd_02 etc.
ctrlName = "cmd_0" & Trim(Str(rowPointer))
Me.Controls.Add _
"Forms.CommandButton.1", ctrlName, True
Me.Controls(ctrlName).Caption = _
listRange.Offset(rowPointer, 0).Value
With Me.Controls(ctrlName)
.Left = 6
.Top = nextTopPosition + 6
.Width = 120
.Height = 24
End With
'adjust next top position
'based on spacing desired and height set
nextTopPosition = nextTopPosition + 6 + 24
rowPointer = rowPointer + 1
Loop
End Sub


"ouch" wrote:

Yeah, I need to create a pop up box of sorts that has a dynamic array of
buttons who's captions are loaded from a worksheet column.

any ideas?


ouch

createing a dynamic array of buttons with captions loaded from
 
Thanks, I was going to do that but I was hopeingI was missing a command to
create the form programaticaly

"JLatham" wrote:

Well, you could create just an empty UserForm with the VB Editor and use its
_Activate() event to populate it with buttons. The code below shows how that
can be done and how to obtain the captions from a list on a sheet. What it
doesn't show are things like:
making sure the form is tall enough to handle all the buttons - you could
either size it large enough to hold all possible ones or dynamically size it
during the same event.
assigning actions to take when each of the new buttons is clicked on the form.

For what it's worth to you, here's the basic 'seed' code to get you started.

Private Sub UserForm_Activate()
Dim listRange As Range
Dim rowPointer As Integer
Dim ctrlName As String
Dim nextTopPosition As Integer
'change to name of form with list for captions
'and the starting cell on the sheet with the list
Set listRange = Worksheets("Sheet1").Range("A1")
Do While Not IsEmpty(listRange.Offset(rowPointer, 0))
'names will be like:
' cmd_00
' cmd_01
' cmd_02 etc.
ctrlName = "cmd_0" & Trim(Str(rowPointer))
Me.Controls.Add _
"Forms.CommandButton.1", ctrlName, True
Me.Controls(ctrlName).Caption = _
listRange.Offset(rowPointer, 0).Value
With Me.Controls(ctrlName)
.Left = 6
.Top = nextTopPosition + 6
.Width = 120
.Height = 24
End With
'adjust next top position
'based on spacing desired and height set
nextTopPosition = nextTopPosition + 6 + 24
rowPointer = rowPointer + 1
Loop
End Sub


"ouch" wrote:

Yeah, I need to create a pop up box of sorts that has a dynamic array of
buttons who's captions are loaded from a worksheet column.

any ideas?


JLatham

createing a dynamic array of buttons with captions loaded from
 
Your reply to my post is empty - is there still a question?

"JLatham" wrote:

Well, you could create just an empty UserForm with the VB Editor and use its
_Activate() event to populate it with buttons. The code below shows how that
can be done and how to obtain the captions from a list on a sheet. What it
doesn't show are things like:
making sure the form is tall enough to handle all the buttons - you could
either size it large enough to hold all possible ones or dynamically size it
during the same event.
assigning actions to take when each of the new buttons is clicked on the form.

For what it's worth to you, here's the basic 'seed' code to get you started.

Private Sub UserForm_Activate()
Dim listRange As Range
Dim rowPointer As Integer
Dim ctrlName As String
Dim nextTopPosition As Integer
'change to name of form with list for captions
'and the starting cell on the sheet with the list
Set listRange = Worksheets("Sheet1").Range("A1")
Do While Not IsEmpty(listRange.Offset(rowPointer, 0))
'names will be like:
' cmd_00
' cmd_01
' cmd_02 etc.
ctrlName = "cmd_0" & Trim(Str(rowPointer))
Me.Controls.Add _
"Forms.CommandButton.1", ctrlName, True
Me.Controls(ctrlName).Caption = _
listRange.Offset(rowPointer, 0).Value
With Me.Controls(ctrlName)
.Left = 6
.Top = nextTopPosition + 6
.Width = 120
.Height = 24
End With
'adjust next top position
'based on spacing desired and height set
nextTopPosition = nextTopPosition + 6 + 24
rowPointer = rowPointer + 1
Loop
End Sub


"ouch" wrote:

Yeah, I need to create a pop up box of sorts that has a dynamic array of
buttons who's captions are loaded from a worksheet column.

any ideas?



All times are GMT +1. The time now is 08:14 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com