0

ブックに複数のシートがある場合のように、特定の条件に基づいてExcelシートの単一のセルに複数の値を入力したい場合、名前TCで始まるシートのいずれかに色が含まれている場合は、情報を入力する必要がありますExcelワークブックの「ReadMe」セクションに別のワークシートがあります。私のコードの問題は、色を含む一意のシートが表示されないことです...シート「TC_1」と「TC_3」のいずれかのセルに色が含まれているとすると、出力は「; TC_3;TC_3;TC_3;」と表示されます。ここで期待される出力は「TC_1;TC_3」ですが。

コードは次のとおりです。

Sub ErrorInSheet()
    Dim Row
    Dim Names As String
    Names = ""

    For Row = 2 To tsheet.UsedRange.Rows.Count
        For Chkcol = 1 To tsheet.UsedRange.Columns.Count
            If tsheet.Cells(Row, Chkcol).Interior.ColorIndex = 3 Then
                Names = Names & ";" & tsheet.Name
            End If
        Next
    Next Row

    Sheets("Read Me").Cells(13, 5).Value = Names

End Sub

Sub iterateSheets()

    For Each sheet1t In Worksheets

       If InStr(1, sheet1t.Name, "TC") Then
           Set tsheet = sheet1t
           Call ErrorInSheet
       End If
    Next
End Sub
4

1 に答える 1

2

私はこれがあなたのために働くと思います-私はそれをテストして私のために働きました。

Sub FindErrors()
    Dim sht As Worksheet, cl As Range, shtNames As String

    shtNames = vbNullString

    For Each sht In Worksheets
       If Left$(sht.Name, 2) = "TC" Then
            For Each cl In sht.UsedRange.Cells
                If cl.Interior.ColorIndex = 3 Then
                    shtNames = IIf(shtNames = vbNullString, sht.Name, shtNames & ";" & sht.Name)
                End If
            Next cl
       End If
    Next sht

    Worksheets("Read Me").Cells(13, 5) = shtNames
End Sub

ノート:

  1. 変数を明示的に宣言しました
  2. すべてのシートが「TC」で始まると仮定しているので、使用しましたが、必要に応じてLeft$使用できますInStr
  3. 私はIIFあなたが先頭に立つのを止めるために三項ステートメントを使用しました;
  4. すべてのコードを1つにまとめましたSubが、必要に応じて分割できます
于 2012-12-09T16:12:40.390 に答える