0

私は順番に多くのシートで構成されているExcelワークシートを持っています.5枚前後としましょう.ExcelシートSheet2、Sheet3、Sheet4、およびSheet5に赤がある場合は赤と言う色の存在を識別するマクロを書きたいですセルのいずれかに色を付けると、ワークブックのシート 1 のシート名が報告され、シート <> セルのいずれかに赤い色が含まれています。

まだ特定のシートに赤い色が存在するかどうかを特定する立場にありました...しかし、シート1で対応するシート名を報告する方法がわかりません.

Sub CheckColor()
Dim Row
For Row = 2 To tsheet.UsedRange.Rows.Count
For chkcol = 1 To Sheet1.UsedRange.Columns.Count
If tsheet.Cells(Row, chkcol).Interior.ColorIndex = 3 Then
    'How to report the corresponding sheet name in sheet 1???
End If
Next
Next Row

サブ終了

4

1 に答える 1

1

まず、FindFormatと一緒にRange.Find()を使用すると、はるかに効率的だと思います。

Private Sub test()
    Application.FindFormat.Clear
    Application.FindFormat.Interior.ColorIndex = 3

    Range("A1:C3").Find(What:="", LookAt:=xlPart, SearchFormat:=True).Value = "test"
End Sub

主な質問として、最初に、すべてのシートに対してコードを実行するか、サブセットに対してコードを実行するかを決定する必要があると思います。すべてのシートに対応している場合は、上記のコードをWorksheetsコレクションのforeachループ内にまとめることができます。

ワークシートのサブセットに対してこのコードを実行する必要がある場合は、ルール(最初の4文字= "abcd")を使用するか、配列にハードコーディングすることができます。

次に、Find()によって返される範囲がnothing成功を意味しないことを確認するだけです。条件が満たされると、現在のシートがメインシートで必要に応じて使用されます。

于 2012-12-09T03:27:53.230 に答える