Добрый день! Помогите, пожалуйста, разобраться с кодом.
После фильтра «Хорошие записи» (только для видимых ячеек) должна выполняться следующая процедура: 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
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)..." Могли бы вы подсказать мне для опыта, что принципиально не так с моей строкой, почему она не работает:(