использование VBA для скрытия различных строк в зависимости от изменения значения ячейки - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время у меня есть следующая кодировка:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim arCases As Variant
  Dim res As Variant

  arCases = Array("Term", "Indeterminate", "Transfer", "Student", "Term extension", "As required", "Assignment", "Indéterminé", "Mutation", "Selon le besoin", "Terme", "prolongation du terme", "affectation", "Étudiant(e)")

    If Target.Address <> "$C$37" Then Exit Sub


    res = Application.Match(Target, arCases, 0)

    If IsError(res) Then
       Rows("104:112").Hidden = False
    Else
       Rows("104:112").Hidden = True

  End If

End Sub

Проблема, с которой я столкнулся, заключается в том, что мне нужно добавить к этому, например, если значение в ячейке C37 равно «X», строки 42:49 скрыты, а если значение в ячейке H4 равно «Y», то строки 101: 114 скрыты ... и т.д .....

Можете ли вы посоветовать, как это сделать?

1 Ответ

0 голосов
/ 30 октября 2018

Вам нужно изменить это условие, чтобы код выполнялся только в том случае, если он соответствует адресу ячейки, а не , а не , когда код выполняется, если адрес не совпадает. Это позволит вам добавить дополнительные условия, соответствующие адресу ячейки.

Я бы порекомендовал изменить жестко закодированный адрес ячейки, например "$ C $ 37", на именованный диапазон, и этот именованный диапазон в идеале должен быть уникальным во всей книге.

arCases = Array("Term", "Indeterminate", "Transfer", "Student", "Term extension", "As required", "Assignment", "Indéterminé", "Mutation", "Selon le besoin", "Terme", "prolongation du terme", "affectation", "Étudiant(e)")

If Target.Address = "$C$37" Then
    res = Application.Match(Target, arCases, 0)
    If IsError(res) Then
       Rows("104:112").Hidden = False
    Else
       Rows("104:112").Hidden = True
    End If
ElseIf Target.Address = "$H$4" Then
    ' Do something else
End If

End Sub

...