检查整数值与浮点值

时间:2019-03-18 07:01:56

标签: vba floating-point integer

我 我的vba似乎不太正常。我需要将N列中的值乘以2(如果它是小数),而对所有其他值不执行任何操作。

目前是

Sub multiply()
Dim i, j, k, l As Integer

Dim n As Variant

i = Application.InputBox("enter end row")

j = Application.InputBox("enter factor")

For k = 1 To i

n = Cells(k, 14) * j

If VarType(n) = vbSingle Then Cells(k, 14) = n

Next k

End Sub

这什么都不做。不知道为什么

1 个答案:

答案 0 :(得分:1)

您的For循环可以这样写:

For k = 1 To i

    If Cells(k, 14) <> Int(Cells(k, 14)) Then 'if it's decimal
        Cells(k, 14) = Cells(k, 14) * j 'then multiply cell by factor
    End If

Next k

请注意,我通过检查该数字的Int()是否与数字本身不同来确定其是否为小数。

一些提示:

  • 如果它始终是您要查找的最后一行,则无需向用户询问输入内容。您可以使用endRow = Cells(1,14).End(xlDown).Row(假设您的数据从第14列的第一个单元格开始)。
  • 使用更好的变量命名,如果您将在几周后重新阅读此代码,将不胜感激。例如,j应该被称为multiplyFactori应该被称为endRow
  • 编写Dim i, j, k, l As Integer时,是在将ijk声明为Variant(默认类型),而仅将l声明为Integer甚至没有在代码中使用(至少在您发布的内容中没有使用)。您应该改写Dim i As Integer, j As Integer, k As Integer, l As Integer