【问题标题】:VB Function error messageVB函数错误信息
【发布时间】:2013-04-22 23:30:26
【问题描述】:

所以我想创建一个函数来计算解决问题的“成本”。

我创建了一个包含整数值的一维数组 Sum(m)。这在不同的子过程中被引用。

Function Cost(sum As Integer, a As Integer) As Long

Dim total As Long

'Calculate cost
For m = 1 To 2 * n + 2
    total = total + (sum(m) - a) ^ 2
Next m
Cost = total

End Function

我不确定我应该在该行的括号部分使用什么

Function Cost(sum As Integer, a As Integer) As Long

当我尝试在我的子过程中调用该函数时,我收到错误消息 - 编译错误:预期数组。这发生在

SolCost = Cost(sum, UBound(x))

我真的很困惑为什么会发生这个错误。这可能是由于严重缺乏 VB 经验。希望大家能帮帮我。

如果您需要更多信息,请随时提出。非常感谢任何帮助。

【问题讨论】:

  • 什么是 x?它正在寻找 x 是一个数组,它可能不是,这就是它抛出的原因。
  • X(i,j) 已经是子过程中的一个数组。它形成一个整数数组,计算成本。基本上,我正在创建一个“魔方”。 X(i,j) 形成问题的初始解。该函数计算此初始解决方案的成本(即距离完美幻方的距离)

标签: excel multidimensional-array user-defined-functions vba


【解决方案1】:

你不能UBound 这样的多维数组。您必须UBound 数组的一个特定维度。因此,如果X(i,j) 是您的数组,您必须使用UBound(X,1) 来表示第一个维度,或者使用UBound(X,2) 来表示第二个维度。这可以扩展到您拥有的任何维度。看看at w3schools,他们的文章涵盖了多维数组。

【讨论】:

  • 好吧,我要去睡觉了,但我明天再看看。感谢您现在的帮助!
  • @Matt 如果这解决了您的问题,请务必将其标记为解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 2021-10-01
  • 2015-03-28
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多