数组值超过255个字符时出现VBA代码错误

数组值超过255个字符时出现VBA代码错误,vba,excel,Vba,Excel,我已从正在进行的项目中提取了以下代码片段: Sub testData() Dim dataRange As Range Set dataRange = Range("B2").Offset(1, 0).Resize(, 3) Dim data As Variant data = dataRange.Value2 Dim i As Integer For i = 1 To UBound(data) Dim datarow As Variant datarow = Worksh

我已从正在进行的项目中提取了以下代码片段:

Sub testData()

Dim dataRange As Range
Set dataRange = Range("B2").Offset(1, 0).Resize(, 3)

Dim data As Variant
data = dataRange.Value2

Dim i As Integer
For i = 1 To UBound(data)
    Dim datarow As Variant
    datarow = WorksheetFunction.Index(data, i, 0)

    For j = 1 To dataRange.Count
        MsgBox "The data is " & datarow(j)
    Next j
Next i

End Sub
在本例中,单元格B3、C3和D3中的值可能是文本、日期、数字

只要指定范围内每个单元格的文本内容不超过255个字符,此代码就可以正常执行。如果更大,代码将在以下行抛出错误:

datarow = WorksheetFunction.Index(data, i, 0)
我已经阅读了使用2010的Excel中的各种字符串限制,其中有各种解决方法。然而,考虑到数据类型变量的使用,我不确定如何检查是否存在超过这些限制的文本值


有人能建议如何调整代码以允许文本长度大于255个字符吗?

根据Tim的建议调整了我的代码,以直接访问数组,而不是使用工作表.Index。更新代码如下:

For i = 1 To UBound(data)
   For j = 1 To dataRange.Count
      MsgBox "The data is " & data(i, j)
   Next j
Next i

这避免了255个字符限制的问题。

如果您真的不需要提取该行,那么您可以直接使用data1,j对数据数组进行索引,这样就可以很好地工作。谢谢Tim,我已经调整了代码以直接使用数组,这很好。不太清楚为什么直接访问数组有效,而worker.index无效。但我可以接受。谢谢你的帮助。