1

ExcelのActiveSheetオブジェクトを使用して、行と列をループしています。

セルの背景色を変更する必要がありますが、この行でアプリケーション定義またはオブジェクト定義のエラーが発生します

ws.Cells(rw, 4).Interior.ColorIndex = 0

これは私が使用しているコードです

Dim ws As Worksheet

Set ws = ActiveSheet

With ws


For rw = 7 To ws.Rows.Count

   For col = 2 To 12

    'Check the first column and if null then exit

    If ws.Cells(rw, 2) = "" Then
        Exit Sub
    End If

   'Check if article code is less than eight digits
    If Len(ws.Cells(rw, 4)) < 8 Then
        ws.Cells(rw, 4).Interior.ColorIndex = 3
    Else
        ws.Cells(rw, 4).Interior.ColorIndex = 0
    End If


  Next col

Next rw

End With

何かご意見は?

4

1 に答える 1

2

コードに問題はありません。ワークシートが保護されているため、そのエラーが発生しています。シートの保護を解除してから、セルの色を変更する必要があります。色の変更が完了したら、再プロテクトできます。このコードを参照してください。

Sub Sample()
    Dim ws As Worksheet
    Dim Mypassword As String

    '~~> Change password here
    Mypassword = "Blah Blah"

    Set ws = ActiveSheet

    With ws
        '~~> Unprotect sheet
        .Unprotect Mypassword
        For rw = 7 To .Rows.Count
            For col = 2 To 12
                'Check the first column and if null then exit
                If .Cells(rw, 2).Value = "" Then Exit Sub

                'Check if article code is less than eight digits
                If Len(.Cells(rw, 4)) < 8 Then
                    .Cells(rw, 4).Interior.ColorIndex = 3
                Else
                    .Cells(rw, 4).Interior.ColorIndex = 0
                End If
            Next col
        Next rw
        '~~> Reprotect sheet
        .Protect Mypassword
    End With
End Sub
于 2012-08-14T12:24:59.087 に答える