View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Rick Rothstein Rick Rothstein is offline
external usenet poster
 
Posts: 5,934
Default Common Function for getting userform information

From the Remarks section of the help file for ReDim...

"If you use the Preserve keyword, you can resize
only the last array dimension and you can't change
the number of dimensions at all."

--
Rick (MVP - Excel)


"Danny" wrote in message
...
On Dec 24, 6:26 pm, "Peter T" <peter_t@discussions wrote:
Sub Test()
Dim i As Long, n As Long
Dim s As String
Dim arr
Dim lb As MSForms.ListBox

Set lb = UserForm1.ListBox1

n = getSelected(lb, arr)

If n = -1 Then
s = "no items selected"
Else
s = arr(0)
For i = 1 To UBound(arr)
s = s & vbCr & arr(i)
Next
End If

MsgBox s

End Sub

Function getSelected(lb As MSForms.ListBox, arr) As Long
Dim i As Long, idx As Long

idx = -1

ReDim arr(0 To lb.ListCount - 1)
For i = 0 To lb.ListCount - 1
If lb.Selected(i) Then
idx = idx + 1
arr(idx) = lb.List(i)
End If
Next
If idx = 0 And idx < UBound(arr) Then
ReDim Preserve arr(0 To idx)
End If
getSelected = idx

End Function

Regards,
Peter T

"Danny" wrote in message

...



Hi,


My macro has a lot of userform and multi listbox within userform (each
userform has unique name). how can I use a function to get the
selected items in different listbox?


eg.
fmMyPlot.lb_Prof_xAxis
fmMyPlot.lb_Prof_y1Axis


fmMyPlot.lb_Std_Gp
fmMyPlot.lb_Std_Series


fmMyTemplate.lb_temp1
fmMyTemplate.lb_temp2


any ideas? thx- Hide quoted text -


- Show quoted text -



Hi, Thanks.

i tried to modify the second part, but failed.
mainly, the array changed from Array(x) to Array(x,2)

++++++++++++++++++
Option Base 1
Function getSelected(lb As MSForms.ListBox, arr) As Long
Dim i As Long, idx As Long

idx = 0
ReDim arr(1 To lb.ListCount, 2)
For i = 1 To lb.ListCount
If lb.Selected(i - 1) = True Then
idx = idx + 1
arr(idx, 1) = lb.List(i - 1)
arr(idx, 2) = i
End If
Next
If idx = 1 And idx < UBound(arr) Then
ReDim Preserve arr(1 To idx)
End If
getSelected = idx

End Function
++++++++++++++++++