Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用个人VBA函数时出错_Vba_Excel_Office365 - Fatal编程技术网

使用个人VBA函数时出错

使用个人VBA函数时出错,vba,excel,office365,Vba,Excel,Office365,我创建了一个包含一些值的表;它是一种日历,显示一年中每一天的一些信息。 每一天,我都会收到一封信。 e、 g.2016年2月3日-->“M” 我还有一个VBA函数,它可以计算一个月的单元格总数,比如“M” 我的第一次尝试是用VBA函数在VBA中修改接收和的单元格的值;但我的问题是,用户可以手动编辑日历的某些单元格,因此我希望自动重新计算总和单元格,但现在它没有 这是我的函数,位于名为“abc”的模块中: 请不要把重点放在球队编号上(法语为“équipeSub”),这与问题无关 包含总和的单元格具

我创建了一个包含一些值的表;它是一种日历,显示一年中每一天的一些信息。 每一天,我都会收到一封信。 e、 g.2016年2月3日-->“M”

我还有一个VBA函数,它可以计算一个月的单元格总数,比如“M”

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

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

请不要把重点放在球队编号上(法语为“équipeSub”),这与问题无关

包含总和的单元格具有以下公式:

=nombreCellulesDansEtat2()
并且启用了公式自动计算选项(我在windows 10中使用excel 365)

错误是sum单元格包含:

#VALUE!
而不是要求的金额


谢谢你支持我的蹩脚英语

您的代码有两个问题

1)
sh
未定义,这会导致代码崩溃并导致
#值

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

为了避免将来出现此类问题,我建议在每个文件的开头添加。该指令将导致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

当您给了错误时,您尝试过用调试器对其进行步进吗?此外,您还应该考虑更改POST的名称。因为该错误意味着excel试图重新计算,但出现了一个错误。将sh替换为ActiveSheet函数将计算为整数谢谢,而且我在函数中使用了“sh”,当我将此函数复制到一个新模块中时,它不再存在。@lolveley未定义的
sh
值的实际原因
但是,键入错误的名称仍然是一个问题,因为函数将始终返回0。
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