.Interior.ColorIndex проблема - PullRequest
       0

.Interior.ColorIndex проблема

0 голосов
/ 09 января 2020

У меня есть саб, который копирует все ячейки с текстом в столбце и переносит их на отдельный лист. Изменяет цвет заливки каждой ячейки после ее транспонирования. Затем пользователь может добавить дополнительные данные и повторно запустить макрос, и он пропустит уже скопированные ячейки, сначала посмотрев на цвет заливки.

Все работает, как и ожидалось, с одним исключением. Только скопированные ячейки становятся желтыми после запуска макроса (ожидаемый результат), но каждая последующая ячейка будет менять цвет всякий раз, когда в нее вводятся какие-либо данные (неожиданный результат.) Я попытался добавить строку, чтобы изменить цвет следующей пустой ячейки обратно на 0, но это не помогло.

Есть ли в любом случае, чтобы Excel не переформатировал цвет ячеек после запуска этого макроса?

Вот полный Sub

Sub TransposeSubLocation()
Dim sh As Worksheet
Dim sht As Worksheet
Dim lRow As Long
Dim lCol As Long
Dim lYellow As Range
Set sh = Worksheets("Sub Location Lists")
Set sht = Worksheets("Equipment List")
Application.FindFormat.Interior.ColorIndex = 6

For i = 1 To 1000 Step 1
    If sh.Cells(5, i).Value <> "" Then
        lRow = sh.Cells(sh.Rows.Count, i).End(xlUp).Row
        lCol = sht.Cells(5, sht.Columns.Count).End(xlToLeft).Column
        On Error Resume Next
            Set lYellow = sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Find(what:="*", after:=sh.Cells(6, i), SearchDirection:=xlPrevious, SearchFormat:=True).Offset(1, 0)

        If lCol > 1 Then
            lCol = lCol + 1
        End If

        If sh.Cells(6, i).Interior.ColorIndex = 6 Then
            sh.Range(lYellow, sh.Cells(lRow, i)).Copy
            sht.Cells(5, lCol).PasteSpecial Transpose:=True
            sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Interior.ColorIndex = 6
            'Here I attempted to force it back to no fill but this did not help
            sh.Cells(lRow, i).Offset(1, 0).Interior.ColorIndex = 0

            Else: sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Copy
            sht.Cells(5, lCol).PasteSpecial Transpose:=True
            sh.Range(sh.Cells(6, i), sh.Cells(lRow, i)).Interior.ColorIndex = 6
            sh.Cells(lRow, i).Offset(1, 0).Interior.ColorIndex = 0
        End If
    End If
Next
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...