下面的代码将文本转换为数字,前缀为0的值除外。002A。
此代码适用于小数据文件,但在大文件上崩溃Excel,即使我在代码运行前关闭计算。
vba
Sub Text2Number()
On Error GoTo EH
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Set Rng = ActiveSheet.UsedRange
Rng.Cells(1, 1).Select
For i = 1 To Rng.Rows.Count
For j = 1 To Rng.Columns.Count
If Rng.Cells(i, j) <> "" Then
Union(Selection, Rng.Cells(i, j)).Select
End If
Next j
Next i
For Each c In Rng.Cells
If IsNumeric(c.Value) And Left$(c.Value, 1) <> "0" Then
c.NumberFormat = "General"
c.Value = c.Value
End If
Next
Rng.HorizontalAlignment = xlLeft
CleanUp:
On Error Resume Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Exit Sub
EH:
' Do error handling
Resume CleanUp
End Sub
2条答案
按热度按时间pu3pd22g1#
使用下面的代码,你不必一个接一个地转换数字,它肯定会挂起你的工作簿
一个更好的方法是在您使用的范围的每一列上使用一个虚拟的“texttocolumn”
我使用的标签作为delim这是不通常存在于excel文本,如果它是目前您可以使用一些其他的分隔符
k10s72fa2#
下面是我如何驯服这个宏并阻止它崩溃的。