我有一个axctiveX列表框,它将从同一张纸上的一个范围填充,但当我尝试从另一张纸上填充它时,它只是空白。没有错误消息,它只是空的。
有趣的是,虽然没有填充值,但是有正确的项目数(16)。如果我将范围设置为“A1:A2”,那么LB只有两个空白项目。
代码是:
Private Sub Worksheet_Activate()
Dim r As Range, data As Range
Set r = Me.Range("c2")
Dim objOLE As OLEObject, objListBox As MSForms.ListBox
Set objOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=r.Left, Top:=r.Top, Width:=r.Width, Height:=100)
With objOLE
.Name = "blah"
' *********this does work*************
objOLE.ListFillRange = Me.Range("D1:D16").Address
'********this does not work************
' objOLE.ListFillRange = Sheets("Sheet6").Range("A1:A16").Address
Set objListBox = .Object
' toggle visibility to ensure the control is clickable
.Visible = False
.Visible = True
End With
With objListBox
.multiSelect = fmMultiSelectMulti
.MatchEntry = fmMatchEntryComplete
End With
End Sub
答案 0 :(得分:0)
除非您指定extenal:=True
可选参数,否则Range.Address property属性不包含工作表名称。但是,在这种情况下,您将工作簿作为外部引用和工作表名称。可能最好用工作表名称和单元格地址构造一个字符串。
With objOLE
.Name = "blah"
'.ListFillRange = "'Sheet6'!A1:A16"
.ListFillRange = "'" & Sheets("Sheet6").Name & "'!" & Sheets("Sheet6").Range("A1:A16").Address
End With