0

ドキュメントに入力された日付に基づいて、入力しているテキストの色を変更したいと考えています。現在、ワークシートに現在の日付を認識するセルがあります=TEXT(TODAY(), "dddd")。そして、次の VBA コード:

  If Range("A1").Value = "Thursday" Then Cells.Font.ColorIndex = 5

問題は、ドキュメント内のすべてのテキストが変更されることです。マクロを実行した後に入力するセルのカラー インデックスを 5 にするだけです。範囲は行ごとに変わるため、範囲を指定したくありません。最後のテキストがどこに入力されたかにもよりますが、各行をループして最後の列を見つけるよりも簡単な方法があると思います。日を識別し、毎日入力するものに色を割り当てるマクロが欲しいです-月曜日の青、火曜日の赤など。特にマクロの後に書かれたテキストのみの色の変更について、助けていただければ幸いです実行されます!

4

3 に答える 3

2

ワークシート変更イベントでこれを行うことができます。これを実装するワークシートのモジュールに移動し (タブを右クリックして [コードの表示] をクリック)、次のコードを入力します。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    For Each c In Target
        Select Case LCase(c.Value)
            Case "monday": c.Font.ColorIndex = 5
            Case "tuesday": c.Font.ColorIndex = 4
        End Select
    Next
End Sub

このコードは、ワークシートで変更が発生するたびに実行されます (更新されない限り、既存のセルには適用されません)。

于 2013-11-14T19:30:30.787 に答える
0

変更された日に基づいてシートで変更されたセルに色を付けたい場合は、以下のコードを試してください。セル内の「月曜日」の値を探すのではなく、月曜日に変更されたすべてのセルに色を付けます。Now()を使用して、セルが実際に変更された瞬間をコードに伝え、Datepartを使用してその日のインデックス (この場合は名前のように、この場合は 1 から 7) を抽出します。

Private Sub Worksheet_Change(ByVal Target As Range)
CurDay = DatePart("w", Now())
Dim c As Range
For Each c In Target
    If CurDay = 0 Then '0 is impossible just to keep the code "clean"
        ElseIf CurDay = 2 Then c.Font.ColorIndex = 5 '2 is by default Monday
        ElseIf CurDay = 3 Then c.Font.ColorIndex = 6 'etc
        ElseIf CurDay = 4 Then c.Font.ColorIndex = 7 'etc
        ElseIf CurDay = 5 Then c.Font.ColorIndex = 8 'etc
        ElseIf CurDay = 6 Then c.Font.ColorIndex = 9 'etc
        ElseIf CurDay = 7 Then c.Font.ColorIndex = 10 'etc
        ElseIf CurDay = 1 Then c.Font.ColorIndex = 11 ' Sunday
    End If
Next
End Sub

それをテストした、魅力のように動作します! これがあなたが探していたものであることを願っています。:)

于 2013-11-14T22:31:36.403 に答える
0

VBA を開き、モジュールを作成する代わりに、Sheet1 --> View Code を右クリックします。これにより、コーディングする領域が開かれるはずです。右上隅に移動し、[変更] を選択します。選択したセルの値を変更するたびに、コードが実行されます。

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Format(Now, "dddd") = "Thursday" Then
            Target.Font.ColorIndex = 5
       End If
    End Sub

このように見えるはずです。またはこれ:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Select Case Format(Now, "dddd")
        Case "Sunday"
            Target.Font.ColorIndex = 1
        Case "Monday"
            Target.Font.ColorIndex = 2
        Case "Tuesday"
            Target.Font.ColorIndex = 3
        Case "Wednesday"
            Target.Font.ColorIndex = 4
        Case "Thursday"
            Target.Font.ColorIndex = 5
        Case "Friday"
            Target.Font.ColorIndex = 6
        Case "Saturday"
            Target.Font.ColorIndex = 7
        End Select
    End Sub

もちろん、色は好きなように変更できますが、入力内容ではなく、実際の日付に基づいて変化します。

私が最後に考えたのは:

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Font.ColorIndex = Weekday(Now)
End Sub
于 2013-11-14T19:40:29.280 に答える