Excel VBA - просмотр отфильтрованной таблицы и повторная проверка второй раз после того, как пользователь настроил свои записи - логически не будет работать - PullRequest
0 голосов
/ 01 марта 2019

Короче говоря, у меня есть пользователь, который вводит данные, проходит множество чисток, проверяет макросы, а затем представляет отфильтрованные данные, содержащие ошибки с данными.Затем пользователь либо исправляет ошибки с помощью информации, либо очищает содержимое ячеек с ошибками (что четко указано для них).Моя проблема в том, что, когда они очищают содержимое ячеек, у меня все еще есть ошибки, которые возвращаются при запуске макроса повторной проверки (проблемы с пробелами в строке).Вот мой код, я не могу получить истинное условное выражение true независимо от того, что я делаю

Dim lastrow As Long
Dim x As Long
Dim cl As Range, rnger As Range

lastrow = Sheets("losses").Cells(Rows.count, "AM").End(xlUp).row

Set rnger = Range("AN3:AN" & lastrow)

For Each cl In rnger.SpecialCells(xlCellTypeVisible)

    x = cl.row
    Range("AA" & cl.row, "AN" & cl.row).Interior.Color = xlNone
    Range("AK" & cl.row, "AN" & cl.row).ClearContents

        If IsEmpty(Range("AA" & x, "AN" & x)) = True Then

        Range("AK" & cl.row, "AN" & cl.row).ClearContents

    Else

        Sheets("losses").Range("AK" & cl.row).Formula = "=IFERROR(VLOOKUP($AB" & cl.row & ",References!$C$1:$D$41,2,FALSE),0)"

        Sheets("losses").Range("AL" & cl.row).Formula = "=IFERROR(VLOOKUP($AE" & cl.row & ",References!$I$1:$J$13,2,FALSE),0)"

        Sheets("losses").Range("AM" & cl.row).Formula = "=IFERROR(VLOOKUP($AF" & cl.row & ",References!$F$1:$G$116,2,FALSE),0)"

    End If

Next cl

Попробовал и этот метод, не повезло

Set rnger = Sheets ("потери "). Диапазон (" AN3: AN "и lastrow)

For Each cl In rnger.SpecialCells(xlCellTypeVisible)

        'If IsEmpty(Range("AA" & x, "AN" & x)) = True Then

        'Range("AK" & cl.row, "AN" & cl.row).ClearContents

    'Else

        Sheets("losses").Range("AK" & cl.row).Formula = "=if(countblank(AA" & cl.row & ":AJ" & cl.row & ")=10," & vbNullString & ",(IFERROR(VLOOKUP($AB" & cl.row & ",References!$C$1:$D$41,2,FALSE),0)))"


        Sheets("losses").Range("AL" & cl.row).Formula = "=if(isBlank(AND(AA" & cl.row & ",AB" & cl.row & ",AC" & cl.row & ",AD" & cl.row & ",AE" & cl.row & ",AF" & cl.row & ",AG" & cl.row & ",AH" & cl.row & ",AI" & cl.row & ",AJ" & cl.row & "))," & vbNullString & ",(IFERROR(VLOOKUP($AE" & cl.row & ",References!$I$1:$J$13,2,FALSE),0)))"

        Sheets("losses").Range("AM" & cl.row).Formula = "=if(isBlank(AND(AA" & cl.row & ",AB" & cl.row & ",AC" & cl.row & ",AD" & cl.row & ",AE" & cl.row & ",AF" & cl.row & ",AG" & cl.row & ",AH" & cl.row & ",AI" & cl.row & ",AJ" & cl.row & "))," & vbNullString & ",(IFERROR(VLOOKUP($AF" & cl.row & ",References!$F$1:$G$116,2,FALSE),0)))"

    'End If

Next cl

1 Ответ

0 голосов
/ 01 марта 2019

Я решил это

Dim lastrow As Long
Dim cl As Range, rnger As Range

lastrow = Sheets("losses").Cells(Rows.count, "AM").End(xlUp).row

Set rnger = Sheets("losses").Range("AN3:AN" & lastrow)

For Each cl In rnger.SpecialCells(xlCellTypeVisible)

        Sheets("losses").Range("AK" & cl.row).Formula = "=if(countblank(AA" & cl.row & ":AJ" & cl.row & ")=10,"""",Iferror(VLOOKUP($AB" & cl.row & ",References!$C$1:$D$41,2,FALSE),0))"

        Sheets("losses").Range("AL" & cl.row).Formula = "=if(countblank(AA" & cl.row & ":AJ" & cl.row & ")=10,"""",Iferror(VLOOKUP($AE" & cl.row & ",References!$C$1:$D$41,2,FALSE),0))"

        Sheets("losses").Range("AM" & cl.row).Formula = "=if(countblank(AA" & cl.row & ":AJ" & cl.row & ")=10,"""",Iferror(VLOOKUP($AF" & cl.row & ",References!$C$1:$D$41,2,FALSE),0))"

Next cl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...