この前の質問で助けられたコードを使用しています: ( VBA Excel は既に置き換えられた項目を置き換えずに検索して置き換えます)
列内の項目を置き換えるために使用する次のコードがあります: Sub Replace_Once() Application.ScreenUpdating = False
LastRow = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & LastRow).Interior.ColorIndex = xlNone
For Each Cel In Range("B1:B" & LastRow)
For Each C In Range("A1:A" & LastRow)
If C.Value = Cel.Value And C.Interior.Color <> RGB(200, 200, 200) Then
C.Interior.Color = RGB(200, 200, 200)
C.Value = Cel.Offset(0, 1).Value
End If
Next
Next
小さなファイルでは問題なく動作しますが、列 A の長さが 3800 に近づき、B と C が約 280 になると、Excel がクラッシュし、次のエラーが発生します。
実行時エラー '-2147417848 (800810108)':
オブジェクト「インテリア」のメソッド「カラー」が失敗しました
なぜこれが起こっているのでしょうか?
編集:エラーを明確にするために、行で発生しているようです
If C.Value = Cel.Value And C.Interior.Color = RGB(200, 200, 200) Then