为什么Excel VBA舍入我的整数除法结果?

Nig*_*ens 4 excel vba excel-vba

我正在Excel 2002中编写一个VBA宏来处理来自设备的日期,该设备在4个通道中的每一个上提供10个值.

当我尝试将整数除以另一个整数来计算行和列时,结果表明它正在使用银行家舍入,就好像它是一个浮点变量.

Sub TestRounding()
    Dim Y As Integer
    Dim Field As Integer
    Dim Channel As Integer

    ActiveWorkbook.Sheets.Add
    ActiveWorkbook.ActiveSheet.Cells.Select
    range("A1").Select

    For Field = 1 To 40
        Channel = (Field - 1) / 10
        Y = Field - 1
        ActiveSheet.range("A1").Offset(Y, Channel).Value = Field
    Next Field

End Sub
Run Code Online (Sandbox Code Playgroud)

Y是输出的行,我通常设置它

Y = (Field -1) mod 10
Run Code Online (Sandbox Code Playgroud)

但是我把它留了下来

Y = Field - 1
Run Code Online (Sandbox Code Playgroud)

在结果工作表中更清楚地说明这一点.

通道应该是输出的列.

当我运行这个宏时,值1-6被放入A列,然后7-15被放入B列,16-26被放入C列,然后是D列27-35,E列36-40 .

我的预期是1-10值进入A列,11-20进入B列,21-30进入C列,31-40进入D列.

我习惯于C和C++,如果我将整数除以另一个整数,则使用整数数学计算结果.VBA有什么不同?

Dan*_*iel 11

使用"整数数学" \代替分组使用/.

整数科

划分项目意味着将其切割成设定值的碎片或分数.因此,除法用于得到一个数的分数.Visual Basic语言为除法提供了两种类型的操作.如果希望操作结果为自然数(称为整数),请使用反斜杠运算符"\"作为除数.使用的公式是: Value1 \ Value2 此操作可以在两种类型的有效数字上执行,包括或不包含小数部分.操作后,结果将是一个自然数.

Decimal Division /
第二种类型的除法产生十进制数.使用正斜杠"/"执行.其公式为: Value1 / Value2 执行操作后,结果为十进制数.

资源

  • 谢谢丹尼尔,这是我的问题.在超过25年的编程中(尽管微软的东西尽可能少),这是我第一次看到反斜杠正在做我通常期望正斜线做的事情.在任何人看来,我只需要检查一些其他代码也不能正常工作,可能是因为同样的事情. (3认同)