【发布时间】:2011-10-10 00:51:31
【问题描述】:
我知道您可以轻松地将一系列单元格放入 Variant 数组,但我想使用字符串数组(因为它是一维的,并且比 Variant 数组占用更少的内存)。
有没有办法自动将范围转换为字符串数组?
现在我正在使用一个函数,它将获取范围并将值保存在变量数组中,然后将变量数组转换为字符串数组。它工作得很好,但我正在寻找一种直接从范围到字符串数组的方法。任何帮助将不胜感激。
Function RangeToArray(ByVal my_range As Range) As String()
Dim vArray As Variant
Dim sArray() As String
Dim i As Long
vArray = my_range.Value
ReDim sArray(1 To UBound(vArray))
For i = 1 To UBound(vArray)
sArray(i) = vArray(i, 1)
Next
RangeToArray = sArray()
End Function
更新: 看起来没有办法在将数据转换为一维字符串数组之前先跳过将数据放入变量数组的步骤。如果这是真的很遗憾(即使不需要太多努力,我也喜欢超优化,所以我希望有一种方法可以跳过这一步)。如果没有解决方案,我将在几天后结束这个问题。感谢你们提供帮助的 cmets,伙计们!
更新2: 西蒙付出了巨大的努力(其他人也是如此),并最终指出确实不可能一次从范围到弦阵列。谢谢大家。
【问题讨论】:
-
您可以在 VBA 中访问直接的内存操作例程,以创建一个非常有效的函数来转换数组。虽然我的主应用程序中确实有一些内存映射代码,但我没有时间和技能来编写一个,所以它就在那里,它将帮助您制作一个非常有效的数组复制程序。
-
我给出的带有一些记忆功能的答案的链接是here。
-
虽然我无法将您链接中的信息应用到这个特定问题,但它是一本很好的阅读书,很有趣。感谢您的链接。
标签: arrays string excel vba range