【发布时间】:2018-04-23 14:16:42
【问题描述】:
使用以下逻辑将一系列值存储到数组时
dim arr as variant
arr = range("A1:B20").value
数字格式设置为文本并在单元格中显示为“US$22,000,000.00”或“£32,000,000.00”或“C$21,000,000.00”等格式的值作为与显示值不同的数字存储到数组中。 (例如,对于第一个“US$22,000,000.00”值,存储在数组元素中的值最终类似于“879732937329”)
我尝试使用以下方法从单元格中获取显示的文本,但是在尝试将数组中的值分配给另一个变量时,它给了我一个类型不匹配错误(我假设 arr 最终是使用时为空:
dim arr as Variant
arr = range("A1:B20").text
有没有办法用范围的文本值填充数组,而无需循环并将每个单元格单独读取到数组元素?
【问题讨论】:
-
你是怎么得出“鸟”变成像“6783”这样的一串数字的结论的?您是否有实际的代码和数据可以edit 回答您的问题,以便我们重现此问题?就目前而言,您的评估违背了
Variant的目的和定义。如果您在某处遇到类型不匹配错误,您可能会将空字符串视为数字,或者将单元格错误视为数字。不合格的Range调用隐式引用ActiveSheet- 运行代码时正确的工作表是否处于活动状态?您可以更改它/参考特定的工作表吗? -
已编辑问题。我意识到正常的字符串可以正常复制。然而,所描述的测试,其中数字以货币指标为前缀,仍然会产生这个问题。我现在将做一个示例输入 + 输出。
-
@forestaker 您能否使用即时窗口结果的屏幕截图编辑您的帖子,类似于 FloLie 在下面发布的内容?
-
以货币指标为前缀的数字仍然会产生这个问题 - 那是因为您正在读取范围的
Text,而不是它的Value。Text始终是一个String,代表单元格中显示的值的表示,包括任何货币指标。如果您打算将该值存储在数值变量中,请不要使用单元格的Text。 -
问题出在其他地方,因为我尝试将范围读取到数组并将数组元素写入即时窗口,但问题不存在。我将此数组传递给模块中的其他子,因此问题可能出现在其他地方。将尝试继续调试以找到它。我已将 FloLie 的答案标记为正确。