Excel VBA - 检查值是否为DOUBLE类型

Bru*_*yne 2 excel vba excel-vba

我有一列数字,我使用VBA将它们除以1000.但是,如果那里没有小数,我只想这样做.即10093,20398,2039348,298,299,10这样的数字将被除以1000,但2938.39,2883.2,.2将不会.

我只想创建一个循环来检查单元格值是否为DOUBLE,如果是,则跳过它 - 否则,除以.

所以,我认为这可能有用,但它没有:

For Each cel In importWS.Range(Cells(2, 2), Cells(dataLastRow - datafirstrow + 1, 2))
    If Not CDbl(cel.Value) Then
        cel.Value = cel.Value / 1000
    End If
Next cel
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Sob*_*gen 5

CDbl 将值转换为双精度值。

尝试

if TypeName(cel.value) = "Double" then
    cel.value = cel.value / 1000
end if
Run Code Online (Sandbox Code Playgroud)


Dav*_*ens 5

或者,检查整数:

With cel
    .Value = IIF(CLng(.Value)=.Value, .Value / 1000, .Value)
End With
Run Code Online (Sandbox Code Playgroud)

这说:如果它是一个整数/长(无小数),则除以1000,否则使用原始cel.Value.

注意:这对于非常大的整数不起作用(大于Long数据类型的任何东西都会引发溢出错误).