2017-03-06 58 views
0

我有一个二维数组(尺寸为0到19,0到7),我有一个列表框,其中第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功能的目的是创建从数组值和一些列表框列中的文本元素被用于存储文本格式的值(颜色/字体/高度&宽度尺寸等)。文本元素是以转置格式创建的,即标题在左边(垂直堆叠),而数组中的列值是从左到右水平创建的。因此我的数组循环代码是:

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

当我开始的每一行,我想获得存储在列表框中第3列,使所有文本元素都使用正确的颜色产生例如值对于数组行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

带sRGBVal的第三行是发生错误的位置。我需要数组列的值与列表框的行值相关联,并捕获该列的列表框3列中的项目值。 – KnightFallz

+0

C的价值是什么?另外,你如何将列表框传递给函数?如果您停止代码并在即时窗口中执行操作:?LBox不算什么,您是否确认该对象存在? –

回答

0

尝试改变函数定义传递列表框作为一种通用的对象,像这样(不声明或为ByRef BYVAL):

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

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

+0

好吧,我只是试过,但仍然是相同的结果。不知道它的价值是什么,但是当错误发生时,LBox确实包含了在当地人窗口中可以看到的信息。这可以在http://i.imgur.com/nqAQ1n2.png看到。 – KnightFallz

+0

您确定在您试图从中访问rgb值时您的列表框已填充? –

+1

我刚刚有一个哈利路亚时刻,虽然在同一时间有点尴尬。这个表格的确可以在http://i.imgur.com/PGkeb1I.png上看到。然而,在回顾Go!按钮代码,在启动课程的行之后,该课程需要一个数据点(左键单击)以确认文本的来源在哪里创建。代码继续,我发现它移动到Go中的下一行!按钮,这是'卸载我'这解释了为什么对象不存在!我只是在隐藏的印象之下。感谢帮助我解决自己错误的建议。 – KnightFallz