从另一个 sheet 的范围填充 activeX ListBox
Populate activeX ListBox from range on another sheet
我有一个 axctiveX 列表框,它将从同一个 sheet 的范围填充,但是当我尝试从另一个 sheet 填充它时,它只是空白。没有错误消息,它只是空的。
有趣的是,虽然没有填充值,但项数是正确的 (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
Range.Address property 属性 不包括工作表名称,除非您指定 extenal:=True
可选参数。但是,在这种情况下,您会同时获得作为外部参考的工作簿和工作表名称。最好用工作表名称和单元格地址构造一个字符串。
With objOLE
.Name = "blah"
'.ListFillRange = "'Sheet6'!A1:A16"
.ListFillRange = "'" & Sheets("Sheet6").Name & "'!" & Sheets("Sheet6").Range("A1:A16").Address
End With
我有一个 axctiveX 列表框,它将从同一个 sheet 的范围填充,但是当我尝试从另一个 sheet 填充它时,它只是空白。没有错误消息,它只是空的。
有趣的是,虽然没有填充值,但项数是正确的 (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
Range.Address property 属性 不包括工作表名称,除非您指定 extenal:=True
可选参数。但是,在这种情况下,您会同时获得作为外部参考的工作簿和工作表名称。最好用工作表名称和单元格地址构造一个字符串。
With objOLE
.Name = "blah"
'.ListFillRange = "'Sheet6'!A1:A16"
.ListFillRange = "'" & Sheets("Sheet6").Name & "'!" & Sheets("Sheet6").Range("A1:A16").Address
End With