Проблемы с "отбором" на работу - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над кодом Excel VBA для импорта и манипулирования некоторыми данными из CSV-файла.Внезапно часть моего кода перестала работать, хотя раньше она работала без проблем.

Речь идет о range.select, а затем - selection.Interior.Pattern = xlSolid

У меня естьпопытался скопировать ту же небольшую часть кода в другую рабочую книгу, и здесь он работает просто отлично.

Dim iPhase As Integer
iPhase = Application.WorksheetFunction.CountIf(Range("A:A"), "Phase")
Dim h As Integer
h = 1

Range("A6").Select

Do Until h > iPhase
    Cells.Find(What:="Phase", after:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate
    ActiveSheet.Range(ActiveCell, ActiveCell.Offset(0, 16)).Select
    With selection.Interior
        .Pattern = xlSolid
        .Interior.PatternColorIndex = xlAutomatic
        .Interior.ThemeColor = xlThemeColorAccent6
        .Interior.TintAndShade = 0
        .Interior.PatternTintAndShade = 0
    End With
    With selection.Font
        .Bold = True
    End With
    h = h + 1
Loop

Я получаю ошибку компиляции: ожидаемая функция или переменная @ "selection.interior"

1 Ответ

0 голосов
/ 19 сентября 2019

Комментарии уже идентифицируют проблемы с вашим кодом;но здесь есть альтернатива, использующая Filter и SpecialCells для выбора видимых данных.Комментарии содержатся в коде.

Sub FliterWithConditionalFormatting()
Dim rng As Range

'properly defing and reference your workbook and worksheet, change as requiried
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1").CurrentRegion

'The WITH..END WITH statement allows you to shorten your code and avoid using SELECT and ACTIVATE
With rng
     .AutoFilter Field:=1, Criteria1:="Phase", Operator:=xlAnd 'filter the rng

    'set the range, to conditionally format only the visible data, skipping the header row
    With .Range(Cells(2, 1), Cells(rng.Rows.Count, 17)).SpecialCells(xlCellTypeVisible)

        With .Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = xlThemeColorAccent6
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With

        With .Font
            .Bold = True
        End With
    End With

    .AutoFilter 'Remove the filter
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...