"募集番号"と "PO#"という2つの列のセルの値を比較するマクロを作成しようとしています。前の行のセル。セルが同じ場合は、線を同じ色でハイライト表示します。以下は、私のコードです:セルの値に基づいてテキストの色を変更しようとすると「下付き文字が範囲外です」エラー
Sub changeTextColor()
Dim Color As Integer
Color = 5
'Get number of rows in the specified column
RowsCount = Range("A1", Range("A1").End(xlDown)).Rows.Count
Dim colReq As Range
Dim colPO As Range
With ActiveSheet.UsedRange.Rows(1)
Set colReq = .Find(What:="Requisition Number", LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
Set colPO = .Find(What:="PO #", LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
End With
'Select cell
ActiveSheet.Cells(1, colReq.Column).Select
'Loop the cells
For x = 1 To RowsCount
If (ActiveCell.Value = ActiveSheet.Cells(ActiveCell.Row + 1, ActiveCell.Column).Value) And _
ActiveSheet.Cells(ActiveCell.Row, colPO.Column).Value = ActiveSheet.Cells(ActiveCell.Row+1, colPO.Column).Value Then
ActiveCell.EntireRow.Font.ColorIndex = Color
ActiveCell.EntireRow+1.Font.ColorIndex = Color
Else
Color = Color + 5
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub
私は私のコードの次の行に「範囲外の添字を」エラーを受信し、それを修正するかどうかはわからないのですか?
ActiveCell.EntireRow.Font.ColorIndex = Color
ActiveCell.EntireRow+1.Font.ColorIndex = Color
デバッグについて学ぶ必要があります。コードをステップ実行して、変数の値を確認します。値が見つかるかどうかはチェックしません(colPO)。アクティブなセルが行1の場合、行ゼロがないためエラーになります。 – SJR
あなたはその行に着くと 'colPO'の範囲があると思いますか?また、私は** **非常に** ['.Select' /' .Activate'の使用を避ける方法を教えることを提案しています(https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in- excel-vba-macros) – BruceWayne
'ActiveCell.Row - 1'が' 0'を返し、行0がないので、行1にいるとエラーが発生します。 – braX