我有一个尺寸为(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错误。我希望有人能指出我正确的方向。如果有任何信息缺失,请告诉我,如有必要,我会提供额外的代码或图片。
由于
答案 0 :(得分:0)
尝试更改函数定义以将列表框作为通用对象传递(不要声明byRef或byVal),如下所示:
Private Function TextFromArray(Point As Point3d, ByRef CurrArray As Variant, _
LBox As Object)
如果这不起作用,您可以尝试以相同的方式传递整个表单而不是列表框,然后只从您传递的表单中访问列表框。