【发布时间】:2021-05-13 11:41:10
【问题描述】:
我仍然是 VBA 编码的新手,并且有一些基本代码来测试功能,然后进行扩展。
某个代码块似乎完全破坏了功能(当我注释该块时,代码可以完美运行),尽管在注释/未注释的代码块中没有什么“发生”。
Function Linearize(Old As Variant) As Variant
' Dim R As Integer
' Dim C As Integer
' Dim L As Integer
'
' R = UBound(Old, 1)
' C = UBound(Old, 2)
' L = R * C
Dim NewA As Variant
NewA = Old.Value2
Linearize = NewA
End Function
当我取消注释代码块时,出现 VALUE 错误...“公式中使用的值的数据类型错误。”
我只是看不出 WTF 会出错吗?非常感谢您的帮助...非常感谢!
【问题讨论】:
-
你是如何加载
Old数组的?是二维数组吗?哪一行会引发错误?是R = UBound(Old, 1)吗?Old是数组还是范围?Variant声明接受这两种情况。如果数组Old.Value2没有任何意义。如果它是一个数组,那么R = UBound(Old, 1)是不合适的......请编辑您的问题并向我们展示调用该函数的 Sub。 -
Old是一个范围吗?你使用Old.Value2所以我猜是这样。您传递给函数的单元格中有什么? -
旧已被定义为“变体”(见上一行)。 .Value2 仍然有效,即使它不是一个范围。我为传递给函数的单元格尝试了不同的单元格值(nums,fromulas,没关系,工作/不工作切换是注释的代码块)。