使用矩阵常数作为控制元素和有效性的输入

使用矩阵常数作为控制元素和有效性的输入

假设在 Microsoft Excel 中有一个名为 的矩阵常量,Values定义为={"One","Two","Three"},我如何在列表框、组合框等控制元素中使用该常量INDIRECT()

我很清楚这些用例需要一个范围而不是矩阵常数,但是有没有办法通过函数等内置方法将一个转换为另一个?我可以在 VBA 中构建或转换范围,但我希望有通用的方法来实现这一点。

我已经考虑过从具有相同维度的内置函数创建一个范围,并使用封装的函数调用分配矩阵常数中的值,但我不确定这是否可以实现。

期待听到任何建议!

PS:我不是在寻找 VBA 解决方案,我想通过内置方法实现这一点。请不要问我使用范围以及为什么要使用矩阵常数 - 它就是这样。;)

答案1

根据这篇文章的回答https://stackoverflow.com/questions/31223709/fill-a-listbox-with-an-array-in-vba 您可以使用Evaluate函数将 Excel 矩阵常量转换为 vba 数组,然后使用它来填充列表框,例如

Sub Listbox_Things()

'My Listbox is called "Listbox1" and it is located on "Sheet1"
'With the Listbox visible, F8 through this code

    With Sheet1.ListBox1
        .List = Split("1,2,3", ",")
        .Clear
        .List = Array("One", "Two", "Three")
        .Clear
        .List = [Values]  ' here 'Values' is defined in Excel
        .Clear
        .List = Array(1, 2, 3)
        .Clear

        Dim x() As Variant
        x = Array("One", "Two", "Three")

        .List = x
        .Clear
        .List = Application.GetCustomListContents(2)

    End With
End Sub

您不能使用INDIRECT函数,因为它仅适用于范围。您可以改用EVALUATE

相关内容