Excel 输入值时自动格式化单元格的宏。(将宏转换为事件宏?)

Excel 输入值时自动格式化单元格的宏。(将宏转换为事件宏?),excel,autoformatting,vba,Excel,Autoformatting,Vba,我有一个电子表格,我想要一个:一个自动格式化的区域,这样字符将显示为红色,数字保持相同的颜色。以下宏似乎工作正常,但每次更改单元格中的值时,我都需要手动运行它: Sub Red_text() Dim i As Integer Dim MyString As String MyString = ActiveCell.Value For i = 1 To Len(MyString) If IsNumeric(Mid(MyString, i, 1)) = False Then

我有一个电子表格,我想要一个:一个自动格式化的区域,这样字符将显示为红色,数字保持相同的颜色。以下宏似乎工作正常,但每次更改单元格中的值时,我都需要手动运行它:

Sub Red_text()

Dim i As Integer
Dim MyString As String

MyString = ActiveCell.Value

For i = 1 To Len(MyString)
    If IsNumeric(Mid(MyString, i, 1)) = False Then
        ActiveCell.Characters(i, 1).Font.Color = RGB(247, 66, 66)
    End If
Next i

End Sub
所以基本上我需要把它改成一个事件宏,每次编辑它时,它都会重新格式化当前单元格。并将此行为限制为A:A范围


任何帮助都将不胜感激

首先对您的宏进行轻微更改:

Sub Red_text(r As Range)

Dim i As Integer
Dim MyString As String

MyString = r.Value

For i = 1 To Len(MyString)
    If IsNumeric(Mid(MyString, i, 1)) = False Then
        r.Characters(i, 1).Font.Color = RGB(247, 66, 66)
    End If
Next i
End Sub
并在工作表代码区域中包含以下事件宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range
    Set A = Range("A:A")
    If Intersect(A, Target) Is Nothing Then Exit Sub
    Application.EnableEvents = False
        Call Red_text(Target)
    Application.EnableEvents = True
End Sub
事件宏检测列A的条目,然后应用格式

编辑#1

事件宏必须更改为一次处理多个单元格。删除原始事件宏并使用此宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, rBIG As Range, r As Range
    Set A = Range("A:A")
    Set rBIG = Intersect(A, Target)
    If rBIG Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In rBIG
            Call Red_text(r)
        Next r
    Application.EnableEvents = True
End Sub

它起作用了!!唯一的问题是,当我试图清除两个或多个单元格时,宏崩溃。修理容易吗?这太完美了!非常感谢你!