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

标签 vba excel

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

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

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

Sub macro()

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

End Sub

最佳答案

将下面的代码添加到工作表的模块中,添加到 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

关于VBA 将存储为文本的数字转换为单元格更改时的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201546/

相关文章:

java - Apache POI 公式检查范围内的任何单元格不为空

excel - 将过滤的行复制到另一个工作表

excel - 如何使用 VBA 在 Excel 中获取用户的语言?

VBA:需要确定FIND方法的结果是NOTHING还是 ""(空)

vba - 以主题作为文件名保存邮件

excel - 如何在使用 Excel VBA 搜索后清除搜索条件和单词

vba - MS Excel VBA - 在类内设置 ADODB.Connection 的问题

ms-access - 从网站上的表格中抓取数据,而无需搜索标签

vba - 如何将 2 个宏组合成 1 个

html - 使用 VBA 从 Web 文档输入元素获取值