gpt4 book ai didi

vba - 在VBA中将变量转换为数组

转载 作者:行者123 更新时间:2023-12-02 02:02:23 29 4
gpt4 key购买 nike

我正在尝试在 VBA 中使用 Excel 内置函数 SumProduct 但不断出现错误。代码片段如下所示

Dim X As Variant
'x is input value, given as Range
X = x.Value

Dim Y() As Double
ReDim Y(1 To N)

'filling Y with whatever values
Dim i As Long
For i = 1 To UBound(Y)
Y(i) = 2
next i

Result = WorksheetFunction.SumProduct(X,Y)

但是,此代码返回#Value,我猜这是因为 X 是 Variant 而 Y 是 Double 类型(因此类型不匹配)。

有没有办法将此变体转换为 double (数组)?我尝试将 X 声明为 Double ,然后循环遍历输入范围本身,但不知道如何“访问”输入范围中的每个元素。

有什么建议?

谢谢

最佳答案

Y 将需要是一个 2D 变体数组。 (我建议你直接以所需的形式构造 Y。)试试这个:

Function Result()

Dim X As Variant
'rng is input value, given as Range. You can't have x and X in VBA due to case-insensitivity
X = rng.Value
N = UBound(X, 1) - LBound(X, 1) + 1 'Should really declare N before using it

Dim Y As Variant 'Changed type here
ReDim Y(1 To N, 1 To 1) 'We need a 2D variant

'filling Y with whatever values
Dim i As Long
For i = 1 To UBound(Y)
Y(i, 1) = 2
Next i

Result = WorksheetFunction.SumProduct(X, Y)

End Function

关于vba - 在VBA中将变量转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16609353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com