将ListObject传递给数组。类型变量字符串错误

时间:2019-07-18 14:46:09

标签: excel vba string variant listobject

想法是将listobject.databodyrange的完整内容传递到数组以在内存中进行操作,而不必重复访问工作表单元格值,这非常耗时。

这是代码。

 Dim theArray As Variant
     theArray = mylistObject.DataBodyRange.value

MsgBox (theArray(1, 1)) '= column 1 row 1 = first element

到目前为止,效果很好。

但是!!!由于theArray的尺寸为Variant,因此它们的元素不是字符串,因此,将theArray的每个值传递给需要字符串的函数时,都会出现错误。

该怎么办?

注意:我知道我可能会将函数本身的数据类型更改为Variant,但是这个函数是从很多例程中调用的,所以我不敢碰它。我宁愿尝试寻找将该变体的内容转换为字符串的方法

theArray(i,j)str(thearray(i,j))(无效)

一些帮助,一些想法?

编辑1: 这是错误所在的行:

Dim theclaims As Variant
      theclaims = rawClsTbl.DataBodyRange.value
For i = LBound(theclaims, 1) To UBound(theclaims, 1)
myText = deleteRefSigns(theclaims(i, 2))
etc

错误:byref参数类型不匹配

其中:     函数deleteRefSigns(txT As String)As String

我将尝试提出的解决方案。

thx

相关问题: 我前段时间在溢出中问了这个问题: Passing Listobject Range to array and getting error "out of range" 并读一本 Excel VBA Type Mismatch Error passing range to array 还有其他几个。

2 个答案:

答案 0 :(得分:1)

以下方法应该起作用:

DbContextOptions<ApplicationDbContext>

注意:始终将其声明为强制数组,而不仅仅是Dim MyStr As String MyStr = CStr(TheArray(1, 1))

Variant

…以确保它包含一个数组。否则,如果执行

,它将仅包含一个值
Dim TheArray() As Variant 'Variant array (can only be an array)
Dim TheArray As Variant 'Variant (can be a value or array)

如果您的范围是动态的,则很容易失败。


如果您将范围读入数组,例如

TheArray = Range("A1").Value 

那么就不可能将数组声明为Dim TheArray() As Variant TheArray = Range("A1:C20").Value ,因为它被设计为强制String

答案 1 :(得分:1)

您似乎不希望deleteRefSigns修改调用过程传递的参数。如果是这样,您可以按值传递参数...

Function deleteRefSigns(ByVal txT As String) As String