如何在 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

【问题讨论】:

Modvba 中的有效运算符。例如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)

【讨论】:

@QHarr 2 Mod 12 有效,但@theforestecologist 是正确的,因为原始值(即1.7 Mod 0.5)返回错误。不,我没有投反对票。 因为你必须使用评估。 VBA 中的 Mod 需要整数。 @QHarr 您能否更新您的答案,演示如何将Evaluate 与变量一起使用?例如:如果我设置了Function modFunc(x,y),我如何将xy 的更改值合并到Debug.Print Evaluate("Mod(x,y)") 中? 感谢您的编辑。最后:为什么我需要包含Debug.Print 噢噢噢。知道了。谢谢!为您的帮助 +1,伙计!

以上是关于如何在 VBA 中使用 Excel 的内置模函数 (MOD)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 VBA 的情况下在 Excel 中执行反向字符串搜索?

如何在 Excel VBA 中对字符串进行 URL 编码?

Excel VBA中的ThisCell属性如何使用?

在excel里插入一列,用哪个函数vba

如何在excel中使用VBA调用其它外部程序

vba,设置,excel,wps ,页面设置例子