gpt4 book ai didi

vba - 使用个人VBA函数时出错

转载 作者:行者123 更新时间:2023-12-03 01:54:02 25 4
gpt4 key购买 nike

我创建了一个包含一些值的工作表;它是一个日历,显示一年中每一天的一些信息。每天,我都会收到一封以信函形式提供的信息。例如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()

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

错误在于求和单元格包含:

#VALUE!

而不是所需的金额。

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

最佳答案

您的代码有两个问题。

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

关于vba - 使用个人VBA函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38957946/

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