我在Excel的GC Trend 的sheet页上插入一个listbox组件,在VBA中我想用这个listbox组件作为对象,获取选择的listbox里的值。这是我自己参考写的,不知道为啥运行有错误,而且应该也获取不到,想求哪位大侠帮忙!!
Sub Refresh_all()
Dim baseSheet As Worksheet
Dim str As String
Dim listbox As listbox
If baseSheet.ListObjects.Count = 0 Then Exit Sub
For Each listbox In baseSheet.ListObjects
str = listbox.selectedValue
MsgBox "&str&"
Next listbox
End Sub
ææ¹æå¦ä¸ï¼
Set baseSheet = Sheets("GC Trend")
If baseSheet.ListObjects.Count = 0 Then Exit Subå½debugå°è¿çæ¶å就跳åºå»äºï¼è¯´æ没æListboxï¼ä½æ¯ææåï¼å¦å¾ï¼ï¼ä¸ºä»ä¹å¢ï¼
For i = 0 To baseSheet.Shapes.Count - 1-->debug到这时count是16
str = baseSheet.Shapes(i).selectedValue-->这里报错说the index into the specified collection is out of bounds.求解答!
shapes 包括的对象有很多,比如插入的图片,线条,和控件等等。
oleobjects 则只包括activex控件。
oleobjects 是 shapes的一个子集,也就是说 oleobjects 的控件都可以在shapes中找到。
所以 不管用哪个,都是需要判断它是否为列表框。
如果你的列表框是 表单控件,那只能通过它连接的单元格来取值了。
你需要获取选中的值,建议你还是用 ActiveX 控件来做。代码如下:
Sub AAA()