如何在 VBA 中使用 Excel 的内置模函数 (MOD)?
Posted
技术标签:
【中文标题】如何在 VBA 中使用 Excel 的内置模函数 (MOD)?【英文标题】:How do I use Excel's built-in modulo function (MOD) in VBA? 【发布时间】:2018-12-06 22:26:56 【问题描述】:我的问题与this post有些相关。
但是,假设我想在 VBA 中使用 Excel 的内置 MOD
(模)函数。
This site 建议使用 Application.WorksheetFunction.[insert name of Excel function]
将提供所需的效果。
但是,Application.WorksheetFunction.MOD
不起作用。
事实上,当我在 VBA 中简单地键入 Application.WorksheetFunction.
时,会出现一个下拉菜单,提供一个可供选择的函数名称列表,但此列表中没有提供 MOD
!
2 个问题:
-
这是怎么回事?
如何在 VBA 中实际使用 Excel 的内置
MOD
函数?
注意:我从这条路径开始 b/c 我试图使用 VBA 的 Mod
函数让 1.7 Mod 0.5
等于 0.2
,但它会在我应用的结果 Excel 单元格中生成 #VALUE!
我的 VBA 函数。但是,如果我直接在 Excel 中输入MOD(1.7,0.5)
,我会得到正确的答案(即0.2
)
【问题讨论】:
Mod
是vba
中的有效运算符。例如123 Mod 11 = 2
@UriGoren 那么为什么在 VBA 中使用1.7 Mod 0.5
不在将MOD(1.7,0.5)
直接输入 Excel 时起作用可以? (答案应该是 0.2)
作为我上一条评论的快速参考答案:正如 QHarr 在他的 answer 中指出的那样,1.7 Mod 0.5
不起作用的原因是因为 VBA 的 Mod
仅适用于整数。我必须使用 Evaluate("Mod(1.7,0.5)")
在 VBA 中完成这项工作。
【参考方案1】:
您按原样使用,因为它是一个运算符(带有整数)。如果您想使用双打等,请使用evaluate
,例如
例如
Debug.Print 2 Mod 12
Debug.Print Evaluate("Mod(1.7,0.5)")
Dim x As Double, y As Double
x = 1.7
y = 0.5
Debug.Print Evaluate("Mod(" & x & "," & y & ")")
见documentation。有大量的limitations。 Microsoft 提供的一种常见解决方法是:
=number-(INT(number/divisor)*divisor)
【讨论】:
@QHarr2 Mod 12
有效,但@theforestecologist 是正确的,因为原始值(即1.7 Mod 0.5
)返回错误。不,我没有投反对票。
因为你必须使用评估。 VBA 中的 Mod 需要整数。
@QHarr 您能否更新您的答案,演示如何将Evaluate
与变量一起使用?例如:如果我设置了Function modFunc(x,y)
,我如何将x
和y
的更改值合并到Debug.Print Evaluate("Mod(x,y)")
中?
感谢您的编辑。最后:为什么我需要包含Debug.Print
?
噢噢噢。知道了。谢谢!为您的帮助 +1,伙计!以上是关于如何在 VBA 中使用 Excel 的内置模函数 (MOD)?的主要内容,如果未能解决你的问题,请参考以下文章