使用个人 VBA 函数时出错

Posted

技术标签:

【中文标题】使用个人 VBA 函数时出错【英文标题】:error using a personal VBA function 【发布时间】:2016-08-15 15:17:46 【问题描述】:

我创建了一个包含一些值的工作表;它是一个日历,显示一年中每一天的一些信息。 对于每一天,我都会收到一封以信函形式提供的信息。 例如2016 年 2 月 3 日 --> “M”

我还有一个 VBA 函数,它计算一个月的单元格总和等于 - 比如说 - “M”。

我的第一次尝试是在 VBA 中使用 VBA 函数修改接收和的单元格的值;但我的问题是用户可以手动编辑日历的某些单元格,所以我希望自动重新计算总和单元格,但现在没有。

这是我的函数,位于名为“abc”的模块中:

Function nombreCellulesDansEtat2() As Integer
Application.Volatile
Dim moisSub
Dim équipeSub
Dim étatSub
moisSub = 1
équipeSub = 1
étatSub = "M"

Dim ligneDépart As Integer
ligneDépart = 5 + (moisSub - 1) * 9
Dim ligneEnCours As Integer
ligneEnCours = ligneDépart + équipeSub

Dim cellule
Dim retour As Integer
For Each cellule In sh.Range("B" & ligneEnCours & ":AF" & ligneEnCours)
    retour = retour + IIf(cellule.Value = étatSub, 1, 0)
Next cellule
nombreCellulesDansEtat = retour


End Function

请不要关注团队编号(法语为“équipeSub”),它与问题无关。

包含总和的单元格有这个公式:

=nombreCellulesDansEtat2()

并启用了自动计算公式的选项(我在windows 10上使用excel 365)

错误是总和单元格包含:

#VALUE!

而不是所需的总和。

感谢您支持我糟糕的英语!

【问题讨论】:

当它给您错误时,您是否尝试过使用调试器单步执行它? 另外,您应该考虑更改帖子的名称。因为那个错误意味着excel确实尝试重新计算,但是出现了错误。 用 sh 代替 ActiveSheet 函数计算为整数 【参考方案1】:

你的代码有两个问题。

1) sh 未定义,这会导致您的代码崩溃并导致#VALUE!

2) 您用于返回的名称是错误的,这意味着您的函数没有返回任何结果,对于 excel,其计算结果为 0(0 是 Integer 的默认值)。

为避免以后出现此类问题,我建议在每个文件的开头添加Option Explicit。该指令将导致 excel 报告此类错误。

Function nombreCellulesDansEtat2() As Integer
Application.Volatile
Dim moisSub
Dim équipeSub
Dim étatSub
moisSub = 1
équipeSub = 1
étatSub = "M"

Dim ligneDépart As Integer
ligneDépart = 5 + (moisSub - 1) * 9
Dim ligneEnCours As Integer
ligneEnCours = ligneDépart + équipeSub

Dim cellule
Dim retour As Integer
'sh is undefined. which means .Range() is called on Nothing
For Each cellule In sh.Range("B" & ligneEnCours & ":AF" & ligneEnCours)
    retour = retour + IIf(cellule.Value = étatSub, 1, 0)
Next cellule

'was nombreCellulesDansEtat
nombreCellulesDansEtat2 = retour


End Function

【讨论】:

谢谢,而且我在我的函数中使用了“sh”,因为我将此函数复制到一个新模块中,所以它不再存在了。 @lolveley 未定义的sh 是导致#VALUE! 的实际原因,但是输入错误的名称仍然是个问题,因为函数总是返回 0。

以上是关于使用个人 VBA 函数时出错的主要内容,如果未能解决你的问题,请参考以下文章

个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

在 VBA 中调用类函数时出错

使用 Alamofire 快速更新个人资料时出错?

在 VBA 中设置 UDF 描述时出错

使用 Xamarin android 和 azure facebook 身份验证获取用户个人资料/详细信息时出错

在 quickblox 上上传个人资料图片时 Swift 出错