【问题标题】:How do I use Excel's built-in modulo function (MOD) in VBA?如何在 VBA 中使用 Excel 的内置模函数 (MOD)?
【发布时间】: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 个问题:

  1. 这是怎么回事?
  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 中完成这项工作。

标签: excel vba modulo excel-2016


【解决方案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,伙计!
猜你喜欢
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2017-07-04
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多