View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Danny[_13_] Danny[_13_] is offline
external usenet poster
 
Posts: 16
Default Common Function for getting userform information

On Dec 25, 3:53*am, "Rick Rothstein"
wrote:
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
++++++++++++++++++- Hide quoted text -

- Show quoted text -


Hi, Thanks.

then i will separate this set array to 2.

br,
Danny