VBA:转换文字 - >数字乘以1

时间:2013-11-25 11:51:47

标签: excel vba excel-vba

我有一个链接到SQL数据库的表,我用它来创建一些报告。问题是数字是文本,我必须每次都将它们转换为数字, 我写了一个宏来创建报告,但我很难转换数字。我试图将整个表格乘以一个(表格丢失了链接,但这不是一个问题,因为我只是将信息复制到另一个工作簿,他们关闭桌子而没有保存)并且当我这样做时它起作用了manualy ,但是当我通过宏做它时它将无法工作。我可以看到它乘以1但数字仍然是文本。

由于我的表很大,尝试转换每个单元格不是一个选项,它需要永远运行每个单元格并使用CStr函数。

我的代码:

Range("B2").Copy
Range("A4", Range("AC4").End(xlDown)).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
    SkipBlanks:=False, Transpose:=False

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

xlDown可能非常不可预测。不要使用它。实际上找到最后一行,然后创建您的范围,然后将其用于您的操作。

同样只是更改格式不会将这些转换为数字。您必须复制F2-Enter行为。

尝试此操作(已完成测试

Sub Sample()
    Dim ws As Worksheet
    Dim Rng As Range, acell As Range
    Dim lRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("AC" & .Rows.Count).End(xlUp).Row

        Set Rng = .Range("A4:AC" & lRow)

        .Range("B2").Copy

        Rng.PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False

        Rng.NumberFormat = "0" ' OR "0.00" as applicable

        For Each acell In Rng
            acell.Formula = acell.Value
        Next
    End With
End Sub

<强> SCREENSHOT

enter image description here