Условное отображение строк в Excel VBA - PullRequest
0 голосов
/ 01 октября 2019

ОБНОВЛЕНИЕ

Я изменил свой код к этому, но теперь строки 11 и 12 не скрываются и не скрываются, как должны. Любая помощь?

Sub ConditionalDisplay()
    With Worksheets("Data Entry")
    If .Range("C6") = "" Then
        .Rows("7:8").Hidden = True
    Else
        .Rows("7").Hidden = .Range("C6") = "lbs/gal"
        .Rows("8").Hidden = .Range("C6") = "g/L"
    End If
    If .Range("C10") = "" Then
        .Rows("11:12").Hidden = True
    Else
        .Rows("11").Hidden = .Range("C10") = "lbs/gal"
        .Rows("12").Hidden = .Range("C11") = "g/L"
    End If
    End With
End Sub

У меня был подобный вопрос в прошлом, но я в тупике. Полный отказ от ответственности: я начинающий, когда дело доходит до VBA.

На изображении ниже я пытаюсь отображать строки 7 и 8 условно, основываясь на вводе в ячейке C6. Кроме того, я пытаюсь отображать строки 11 и 12 условно на основе ввода в ячейку C10. Выбор данных для проверки в ячейках C6 и C10: «г / л» и «фунт / галлон».

enter image description here

Вот код, который яначал писать, но не работает как задумано. У меня есть событие открытия рабочей книги, которое автоматически вызывает подпрограмму ConditionalDisplay при открытии рабочей книги, но мне трудно понять, как отобразить строки 7 и 8 после выбора в ячейке C6.

Sub ConditionalDisplay()
    With Worksheets("Data Entry")
    If .Range("C6") = "" Then
        .Rows("7:8").Hidden = True
    If .Range("C6") = "g/L" Then
        .Rows("8").Hidden = True
    If .Range("C6") = "lbs/gal" Then
        .Rows("7").Hidden = True
      End If
      End If
      End If
    End With
End Sub

Как написано, этот код работает не так, как задумано. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Очевидно, что для ответа нужно было иметь следующий код на листе ввода данных:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C13")) Is Nothing Then
    ConditionalDisplay
End If
If Not Intersect(Target, Range("C17")) Is Nothing Then
    ConditionalDisplay
End If
End Sub

Мой вопрос: что именно делают эти команды? Я не видел их раньше.

0 голосов
/ 01 октября 2019

Что вам, вероятно, нужно:

Sub ConditionalDisplay()
    With Worksheets("Data Entry")
        If .Range("C6") = "" Then
            .Rows("7:8").Hidden = True
        End If
        If .Range("C6") = "g/L" Then
            .Rows("8").Hidden = True
        End If
        If .Range("C6") = "lbs/gal" Then
            .Rows("7").Hidden = True
        End If
    End With
End Sub

Правильный отступ в вашем коде помогает увидеть, что с ним происходит. Это может помочь

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