2013-07-08 33 views
0

我有一个宏允许人们使用fmMultiSelectMultifmMultiSelectExtended来选择列表框项目。这两个选项可以随时用单选按钮切换。但是,如果某人选择了一个组,然后更改了选择,则会清除该选择。是否有可能通过改变过程来保持选择?做事更改选择类型时保留选定的对象

Private Sub OptionButton3_Click() 
    ListBox1.MultiSelect=fmMultiSelectMulti 
End Sub 

Private Sub OptionButton4_Click() 
    ListBox1.MultiSelect=fmMultiSelectExtended 
End Sub 
+1

您可以捕获当前选择(例如在数组或集合中),然后在更改选择类型后重新应用它。 –

+0

@TimWilliams这是一个好主意,但我想知道是否碰巧有更多的“VBA”方式。我正在努力学习更多关于该语言的知识。如果没有,那很好,因为阵列想法不应该很难 – Daniel

回答

1

一个稍微PPT方式:

Dim oRng As ShapeRange 
Dim x As Long 

Set oRng = ActiveWindow.Selection.ShapeRange 

' Select something else as a test: 
ActivePresentation.Slides(1).Shapes(1).Select 

' Now restore original selection 
oRng.Select 

' Then at this point you could clear your list box and 
For x = 1 To oRng.Count 
    ' add the shape's name to the list box 
    Debug.Print oRng(x).Name 
Next 

这将有自动恢复形状的前一个选择的优势。另一方面,Tim的做法更为普遍(即,您可以在任何列表框的情况下重复使用相同的代码)。