【问题标题】:Excel 2010 VBA function returning an arrayExcel 2010 VBA 函数返回一个数组
【发布时间】:2013-01-24 10:57:07
【问题描述】:

我收到了针对存款计算的 Excel 2010 VBA 函数实现的编译错误。 我想返回一个数组,其中包含给定存款的利率及其值。

Function exe3djxInterestSelect(deposite)
  Dim V() As Variant
  ReDim V(1, 2)
  Select Case deposite
  Case Is < 0
    exe3djxInterestSelect = CVErr(xlErrNum)
  Case 0 To 1000
    V(1) = 0.055
    V(2) = deposite * 0.055
    exe3djxInterestSelect = V
  Case 1000 To 10000
    V(1) = 0.063
    V(2) = deposite * 0.063
    exe3djxInterestSelect = V
  Case 10000 To 100000
    V(1) = 0.073
    V(2) = deposite * 0.073
    exe3djxInterestSelect = V
  Case Else
    V(1) = 0.078
    V(2) = deposite * 0.078
    exe3djxInterestSelect = V
  End Select

结束函数

它返回#VALUE! .

它有什么问题?

谢谢

【问题讨论】:

  • 如果您从 Sub 而不是工作表中调用 UDF,调试 UDF 会更容易。
  • 我从工作表中调用它。我需要定义一个新函数来调用这个函数吗?谢谢!
  • 只需在同一个模块中创建一个子:它只需要一行(例如)Dim v:v=exe3djxInterestSelect(100) 将光标放在子中按F5运行它。
  • 要在没有额外子项的情况下调试工作表公式,请使用 F9 在代码中插入断点。在公式窗口中按 Enter 后,您将被定向到 VBE 窗口中的断点,您可以使用 F8/Ctrl-F8 单步执行代码。

标签: excel vba


【解决方案1】:

您正在混淆一维和二维数组:试试这个

Function exe3djxInterestSelect(deposite)
  Dim V() As Variant
  ReDim V(1 To 1, 1 To 2)
  Select Case deposite
  Case Is < 0
    exe3djxInterestSelect = CVErr(xlErrNum)
  Case 0 To 1000
    V(1, 1) = 0.055
    V(1, 2) = deposite * 0.055
    exe3djxInterestSelect = V
  Case 1000 To 10000
    V(1, 1) = 0.063
    V(1, 2) = deposite * 0.063
    exe3djxInterestSelect = V
  Case 10000 To 100000
    V(1, 1) = 0.073
    V(1, 2) = deposite * 0.073
    exe3djxInterestSelect = V
  Case Else
    V(1, 1) = 0.078
    V(1, 2) = deposite * 0.078
    exe3djxInterestSelect = V
  End Select
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多