【问题标题】:VBA: Convert all worksheet text to numberVBA:将所有工作表文本转换为数字
【发布时间】:2018-07-20 09:34:57
【问题描述】:

我希望使用 VBA 将所有以文本形式存储在工作表中的数字自动转换为数字。 Excel 似乎会自动检测这些值,VBA 中有一种方法可以转换所有这些数字吗?

我找到了以下将文本转换为数字的解决方案,但我希望这适用于所有工作表而不是指定范围,因为工作表是动态的。

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

有人有想法吗?

【问题讨论】:

  • 问题是因为您使用. 作为小数分隔符吗?因此, 无法识别,Excel 会自动将其格式化为Text?
  • 谢谢,原来如此!
  • 这个问题在德国经常发生,我想在法国应该也是这样。

标签: vba excel type-conversion


【解决方案1】:
with activesheet.usedRange
    .numberFormat = "General"
    .value = .value
End with

【讨论】:

    【解决方案2】:

    猜测问题出在不同的小数分隔符上,这在德国和法国是一个相当大的问题。如果是这种情况,则可行:

    Option Explicit
    
    Public Sub TestMe()
    
        On Error GoTo TestMe_Error
    
        Dim myCell As Range
        Dim tryCell As String
    
        For Each myCell In Cells.SpecialCells(xlCellTypeConstants)
            tryCell = Replace(myCell, ",", ".")
            If IsNumeric(tryCell) Then
                myCell = Replace(myCell, ",", ".")
            End If
        Next myCell
    
        On Error GoTo 0
        Exit Sub
    
    TestMe_Error:
    
        MsgBox "No contant values!"
    
    End Sub
    

    代码检查ActiveSheet 中所有没有公式的单元格。然后,如果通过将, 更改为.,单元格将变为数字,它会更改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多