当我尝试将此值传递给数组时,我继续收到错误,基本上我正在使用汇率,我在数组的第二维中使用货币 ary ()和我希望在一个表中检索一个数据点,该数据点距离存储在数组中的元素2个单元。
现在我认为这个问题与值是一个数字有关,数组是变种,但是我无法解决问题。
Option Explicit
Dim fxary(), y
ws.Select
Set Rng = Sheets("BEXR").Range("C2:C" & Sheets("BEXR").Range("A1").End(xlDown).Row)
For i = 1 To UBound(ary, 2)
If ary(2, i) <> ary(2, UBound(ary, 2)) Then
For Each y In Rng
If Sheets("BEXR").Range(y.Address).Value = ary(2, UBound(ary, 2)) And Sheets("BEXR").Range(y.Address).Offset(0, 1).Value = ary(2, i) Then
fxary() = Sheets("BEXR").Range(y.Address).Offset(0, 2).Value ' error occurring here
fxary = ary(1, i)
End If
Next y
End If
Next
答案 0 :(得分:1)
您的评论是I have omitted all the lines not related to this specific problem
,因此我会根据假设 与问题相关的所有行都已包含在代码中来发布答案问题。
应该对您的代码进行以下评论:
您使用了Option Explicit
,但无处声明变量i
和ary
的大小或类型。
您无处为变量ary
指定值。
您的行fxary() = Sheets("BEXR").Range(y.Address).Offset(0, 2).Value
正在尝试为矢量指定标量,并会生成类型不匹配错误。
您的行fxary() = Sheets("BEXR").Range(y.Address).Offset(0, 2).Value
后面紧跟一行(fxary = ary(1, i)
),用其他内容替换fxary的值,因此第一行是多余的。
您对Sheets("BEXR").Range(y.Address)
的所有引用都可以替换为y
。
您正在执行两个循环(从1到未定义变量ary
的第二个维度,并且在该循环内,通过工作表的C列中的每个单元格),但您是实际上只设置fxary
一次,即设置为未定义变量ary
中的值,其中第一个维度的值为1,第二个维度的值为i
。 (但是我还没有足够能够解决代码中的i
最终会变成什么样的价值 - 我认为它&#39 ; s通过查看工作表的每一行,在C列中的值与在D列中具有不同的值,并且C列中的值等于ary(2, highest value)
,然后确定i的最高值使得ary(2, i)
将等于D列中的值。)
<小时/> 我相信您需要在代码执行任何有意义的操作之前查看上述每个项目,但要解决您所说的特定问题:
1)将你的fxary声明改为
Dim fxary, y
2)只需删除
行fxary() = Sheets("BEXR").Range(y.Address).Offset(0, 2).Value
因为那条线是多余的(正如我之前提到的那样)。