使用vba格式化数字不起作用

时间:2017-12-19 14:05:27

标签: vba number-formatting

多年来一直在使用这个网站,并享受使用vba自动执行繁重的任务。但现在我需要拜访专家。 我已经录制了一个宏来将我的csv文件转换为列,它工作正常 我不能用数字格式化两列。我尝试过录制几个场景并添加不同的命令。没有任何作用 我在丹麦工作。我必须每天执行12次以上。请帮助,thx。

数据如下所示:Before formatting

格式化后 After Formatting

我的代码适用于Text to Columns:

Selection.TextToColumns Destination:=Range("A1"),DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5,   1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), TrailingMinusNumbers:=True
Columns("E:F").Select
Selection.Replace What:=".", Replacement:=","

我尝试使用键盘快捷键格式化单元格,并试图编写一些代码;其中包括:

'NumberFormat = "#.##0,00"

Columns("E:F").Value = Columns("E:F").Value

With Range("E:F")
    .NumberFormat = "0"
    .Value = .Value
End With

但他们不起作用。 是因为我正在使用丹麦语键盘吗?

2 个答案:

答案 0 :(得分:0)

尝试使用.value=val(.value)代替.Value = .Value,如果它不起作用,请将格式行更改为.NumberFormat = "General"如果它不起作用,则需要逐个循环遍历单元格并将它们转换为Numbers,代码下面肯定会有效。

Sub ConvertTextToNumbers()
    Dim rng As Range
    Dim cell As Range
    Dim WS As Worksheet

    Set WS = ActiveSheet 'change as needed

    On Error Resume Next
    Set rng = UsedRange.SpecialCells(xlCellTypeConstants)
    On Error GoTo 0

    If Not rng Is Nothing Then
        For Each cell In rng
            If IsNumeric(cell.Value) Then
                cell.NumberFormat = "General"
                cell.Value = Val(cell.Value)
            End If
        Next cell
    End If
End Sub

答案 1 :(得分:0)

代替

.Value = .Value

使用

.TextToColumns

示例:

Columns("A:A").NumberFormat = "General"
Columns("A:A").TextToColumns

这项工作可以立即在整个范围内进行,不需要为单个单元格逐个循环运行。