0

文字が赤で表示され、数字が同じ色のままになるように、A:A 範囲を自動的にフォーマットするスプレッドシートがあります。次のマクロは問題なく動作するようですが、セルの値を変更するたびに手動で実行する必要があります。

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 範囲に制限します。

どんな助けでも大歓迎です!!

4

1 に答える 1

1

まず、マクロを少し変更します。

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
于 2013-10-01T16:39:53.500 に答える