从另一个 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