Arrays 将混合类型范围存储到数组

Arrays 将混合类型范围存储到数组,arrays,string,vba,text,Arrays,String,Vba,Text,使用以下逻辑将一系列值存储到数组时 dim arr as variant arr = range("A1:B20").value 数字格式为文本并以“US$22000000.00”或“32000000.00”或“C$21000000.00”等格式显示在单元格中的值将作为不同于显示值的数字存储到数组中。(例如,对于第一个“US$22000000.00”值,存储在数组元素中的值最终类似于“879732937329”) 我尝试使用以下方法从单元格中获取显示的文本,但在尝试将数组中的值分配给另一个

使用以下逻辑将一系列值存储到数组时

 dim arr as variant
 arr = range("A1:B20").value
数字格式为文本并以“US$22000000.00”或“32000000.00”或“C$21000000.00”等格式显示在单元格中的值将作为不同于显示值的数字存储到数组中。(例如,对于第一个“US$22000000.00”值,存储在数组元素中的值最终类似于“879732937329”)

我尝试使用以下方法从单元格中获取显示的文本,但在尝试将数组中的值分配给另一个变量时,它会给我一个类型不匹配错误(我假设使用时arr最终为空):

dim arr as Variant
arr = range("A1:B20").text

是否有任何方法可以使用范围的文本值填充数组,而无需将每个单元格分别循环读取到数组元素?

您的错误似乎无法再现。以下代码按您的意愿执行:

Sub test()
Dim arr As Variant

arr = Range("A1:A6").Value

For Each entry In arr
    Debug.Print entry & vbTab & TypeName(entry)
Next entry


End Sub

你是如何得出“bird”变成像“6783”这样的一串数字的结论的?您是否有可以输入问题的实际代码和数据,以便我们重现此问题?目前,您的评估违背了
Variant
的目的和定义。如果您遇到类型不匹配错误,您可能将空字符串视为数字,或将单元格错误视为数字。U不合格的
Range
调用隐式引用了
ActiveSheet
-运行代码时正确的工作表是否处于活动状态?是否可以更改它/引用特定的工作表?编辑过的问题。我意识到正常的字符串可以复制。但是,所描述的测试中,数字前面加上货币指示符的情况仍然存在产生这个问题。我现在就做一个输入+输出示例。@forestaker你能用一个即时窗口结果的屏幕截图来编辑你的帖子吗,类似于下面FloLie发布的内容吗?以货币指标为前缀的数字仍然产生这个问题-这是因为你正在读取范围的
文本
,而不是我ts
Value
Text
始终是一个
字符串
,表示单元格中显示的值,包括任何货币指示器。如果要将该值存储在数字变量中,请不要使用单元格的
文本。问题在别处,因为我刚刚尝试读取范围到数组,并将数组元素写入即时窗口,但问题不存在。我正在将此数组传递给模块内的其他子节点,因此问题可能会在其他地方出现。我将尝试继续调试以找到它。我已将FloLie的答案标记为正确。编辑了问题。我意识到正常字符串已被复制。H在描述的测试中,以货币指标作为数字前缀的测试仍然会产生这个问题。我现在将做一个输入+输出示例。我更喜欢将
Dim arr()作为变量
,但它在这里没有明显的区别。这只是使它更明显地是一个变量数组,而不是未知类型。