在循环遍历数组时获取列表框项值

时间:2017-03-06 17:08:11

标签: arrays vba listbox

我有一个尺寸为(0到19,0到7)的2D数组,我有一个列表框,其中第0列显示数组中第0行的值。在列表框第3列(第4列)中,我有一个带逗号分隔符的RGB值,例如0,255,255。我在一个类中有一个函数,我传递数组,列表框作为参数,如此(点是一个坐标位置,但与此问题无关):

Set oText_LB1 = TextFromArray(Point, ArraysSorted(0), FrmMain.LB_Sheet1)

函数声明写成:

Private Function TextFromArray(Point As Point3d, ByRef CurrArray As Variant, ByVal LBox As ListBox)

TextFromArray函数的目的是从数组值创建文本元素,并且一些列表框列用于存储文本格式值(颜色/字体/高度和宽度大小等)。 Text元素以转置格式创建,即标题位于左侧(垂直堆叠),数组中的列值从左到右水平创建。因此我的数组循环代码是:

For C = LBound(CurrArray, 2) To UBound(CurrArray, 2)
    For R = LBound(CurrArray, 1) To UBound(CurrArray, 1)

当我开始每一行时,我想获取存储在列表框第3列中的值,以便使用正确的颜色创建所有文本元素,例如对于Array Row 0,获取列表框值0,3。我之前只是将RGB值作为参数传递给TextFromArray函数,一切正常但我正在努力如何使用获取值。我尝试过使用:

For C = LBound(CurrArray, 2) To UBound(CurrArray, 2)
    For R = LBound(CurrArray, 1) To UBound(CurrArray, 1)
       sRGBVal = CStr(LBox.List(C, 3))

但是这会无效地使用null错误。我希望有人能指出我正确的方向。如果有任何信息缺失,请告诉我,如有必要,我会提供额外的代码或图片。

由于

1 个答案:

答案 0 :(得分:0)

尝试更改函数定义以将列表框作为通用对象传递(不要声明byRef或byVal),如下所示:

    Private Function TextFromArray(Point As Point3d, ByRef CurrArray As Variant, _
                                   LBox As Object)

如果这不起作用,您可以尝试以相同的方式传递整个表单而不是列表框,然后只从您传递的表单中访问列表框。