在Excel上插入一个listbox组件,在VBA中我想用这个listbox组件作为对象,获取选择的listbox里的值。 10
我在Excel的GCTrend的sheet页上插入一个listbox组件,在VBA中我想用这个listbox组件作为对象,获取选择的listbox里的值。这是我自己参考写...
我在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 展开
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 展开
3个回答
展开全部
MsgBox "&str&"
改成
msgbox str
另外baseSheet 你没有指定对象
set baseSheet= sheets("表的名称")
改成
msgbox str
另外baseSheet 你没有指定对象
set baseSheet= sheets("表的名称")
追问
追答
Sub showselectedvalues()
Dim OBJ As OLEObject, n%, i%, j%, sh As Worksheet
Set sh = Sheets("sheet3") '指定工作表,自己根据需要修改
For Each OBJ In sh.OLEObjects
If TypeOf OBJ.Object Is MSForms.listbox Then n = n + 1 '获取工作表内列表框个数n
Next
For i = 1 To n
For j = 0 To sh.OLEObjects("ListBox" & i).Object.ListCount - 1
If sh.OLEObjects("ListBox" & i).Object.Selected(j) Then MsgBox sh.OLEObjects("ListBox" & i).Object.List(j)
Next j
Next i
End Sub
展开全部
ListObjects 并不是表示列表框,而表示表格(插入---表格)。
如果是 activex 控件可以用 OLEObjects
如果是 表单控件,可以用 shapes
如果是 activex 控件可以用 OLEObjects
如果是 表单控件,可以用 shapes
追问
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()
Dim O As Shape
Dim L As Object
For Each O In Shapes
If O.Type = msoOLEControlObject Then
If O.OLEFormat.Object.progID = "Forms.ListBox.1" Then
Set L = OLEObjects(O.Name).Object
For I = 0 To L.ListCount - 1
If L.Selected(I) Then
S = S & vbCrLf & L.List(I)
End If
Next
MsgBox "列表框 """ & O.Name & """ 的值为: " & S
S = ""
End If
End If
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ListBox1引用:
baseSheet.Shapes(n)
n代表第几个Shape
baseSheet.Shapes(n)
n代表第几个Shape
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询