使用VBA将数字存储为数字的数字

时间:2017-07-12 14:10:50

标签: vba excel-vba excel

我有一些列的单元格为“存储为文本的数字”,这会导致其他代码尝试将一个范围复制到另一个范围时出现问题 rng1.Copy Destination:=rng2

目的地范围(rng2)为空白。没有任何其他数据的这个问题,只是当这些“存储为文本的数字”存在时,所以我需要通过VBA将它们转换为数字。

环顾四周似乎有两种方法,但两种方法都不适用于我......

TextToColumnns:

rng1.Select
Selection.TextToColumns Destination:=Range(rng1), DataType:=xlDelimited

值=值:

Range(rng1).Select
    With Selection
        .NumberFormat = "General"
        .Value = .Value
    End With

我发现的其他方法有100多行代码,这肯定不是正确的?

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

这样的事情出了什么问题:

Public Sub TestMe()

    With Selection
        .NumberFormat = "0.00"
        .Value = .Value
    End With

End Sub

答案 1 :(得分:0)

你可以用它来转换它们:

Function text_to_number(txt As String) As Double
    text_to_number = txt * 1.0
End Function

所以,首先,你需要转换它们,然后复制到另一个地方。 像这样:

Sub copy_and_paste()
    Dim numbers(30) As Double


    'Copping from range A1:A30
    For i = 1 To 30
        numbers(i) = text_to_number(Cells(i, 1).Value)
    Next i

    'Pasting tn B1:B30
    For i = i To 30
        Cells(i, 2).Value = numbers(i)
    Next i


End Sub