VBA将存储为文本的数字转换为单元格更改时的数字

时间:2017-11-09 12:11:49

标签: vba excel-vba excel

使用以下代码将存储为文本的数字转换为数字。如何自动化此宏来触发单元格更改?

例如。一旦我将数据从其他来源粘贴到电子表格上,我希望Y:Y范围内新粘贴的单元格将存储为文本的数字转换为数字

尝试了一些不同的东西,但只有在将宏设置为手动运行时才会转换单元格。

Sub macro()

Range("Y:Y").Select 
With Selection
    Selection.NumberFormat = "0"
    .Value = .Value
End With

End Sub

1 个答案:

答案 0 :(得分:5)

将以下代码添加到您的工作表模块中,添加到Worksheet_Change活动。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("Y:Y")) Is Nothing Then
    Application.EnableEvents = False

    With Target
        .NumberFormat = "0"

        If InStr(.Value, "`") = 1 Then ' if leading character is apostrophe
            .Value = Mid(.Value, 2) ' start from second character
        Else ' regular number
            .Value = .Value
        End If
    End With
End If
Application.EnableEvents = True

End Sub