【问题标题】:Check for integer value vs float value检查整数值与浮点值
【发布时间】:2019-03-18 07:01:56
【问题描述】:

我 我的 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

这没有任何作用。不知道为什么

【问题讨论】:

    标签: vba floating-point integer


    【解决方案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时,你声明ijkVariant(默认类型)并且只有lInteger,你甚至没有在你的代码(至少不在您发布的内容中)。你应该改写Dim i As Integer, j As Integer, k As Integer, l As Integer

    【讨论】:

      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多