Страницы: 1
RSS
Необходимо прописать текстовое значение в ячейках, по нескольким условиям, и только для видимых ячеек
 
Добрый день!
Помогите, пожалуйста, разобраться с кодом.

После фильтра «Хорошие записи» (только для видимых ячеек) должна выполняться следующая процедура:
1.       Если в Колонке «Пол» значение ячейки равно «0», тогда в колонке «Итог» прописывается текст «жен»
2.       Если в Колонке «Пол» значение ячейки равно «1», тогда в колонке «Итог» прописывается текст «муж»
3.       Если не то и не другое, тогда  MsgBox выдает ошибку «Не верный ИД пола»

Макрос работает, но не совсем корректно, выдает только итог «муж». Прилагаю тестовый файл  с готовым макросом в файле.
Буду благодарен за любую критику кода)
Код
Sub Test()
    Dim x As Range
    Dim C  As Range
    Dim D  As Range
ActiveSheet.Rows("1:1").AutoFilter Field:=2, Criteria1:="Хорошие записи"
    
    Set C = Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
    Set D = Range("D2:D" & Cells(Rows.Count, "A").End(xlUp).Row)

    For Each x In C.SpecialCells(xlCellTypeVisible)
        If x.Value = 0 Then
D.SpecialCells(xlCellTypeVisible) = "жен"
    ElseIf x.Value = 1 Then
D.SpecialCells(xlCellTypeVisible) = "муж"
ElseIf x.Value <> 0 And 1 Then
MsgBox "Не верный ИД пола"
End If
    Next x
End Sub
Изменено: vikttur - 05.06.2021 23:03:58
 
Код
Sub Test()
    Dim x As Range
    Dim C  As Range
    Dim D  As Range
ActiveSheet.Rows("1:1").AutoFilter Field:=2, Criteria1:="Хорошие записи"
    Set C = Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row)
    Set D = Range("D2:D" & Cells(Rows.Count, "A").End(xlUp).Row)
    For Each x In C.SpecialCells(xlCellTypeVisible)
        If x.Value = 0 Then
          Cells(x.Row, "D") = "жен"
        ElseIf x.Value = 1 Then
          Cells(x.Row, "D") = "муж"
        ElseIf x.Value <> 1 And x.Value <> 2 Then
          MsgBox "Не верный ИД пола в строке " & x.Row
       End If
    Next x
End Sub
 
Спасибо огромное за помощь!

Я в процессе обучения VBA. Вижу что вы изменили такую строку как  "...D.SpecialCells(xlCellTypeVisible)..." Могли бы вы подсказать мне для опыта, что принципиально не так с моей строкой, почему она не работает:(
 
Код
"...D.SpecialCells(xlCellTypeVisible)..."

это все видимые строки столбца D, а вам нужна конкретная строка x.Row
 
Спасибо огромное:)
Изменено: vikttur - 07.06.2021 13:39:48
Страницы: 1
Наверх