Скрытие строк с помощью макроса - PullRequest
0 голосов
/ 17 мая 2019

У меня есть этот проект, над которым я работаю, где у меня есть лист данных, и я собираю данные в листе 2.Я хочу, чтобы строка на «Листе 2» автоматически скрывала / отображала, если в этой строке нет данных в конкретной ячейке.

Я очень плохо знаком с макросами и кодированием в целом.Я пытался найти это, но следовал инструкциям на YouTube, но ни один из них не слишком углубился в то, почему вы выбираете определенные вещи, и мне не повезло заставить их работать.

Мой вопросare.:

  1. Будет ли макрос, который влияет на "Лист 2", пока я нахожусь на "Данные", помещен в "Лист 2" или в "ThisWorkbook"?

  2. Перед тем, как написать макрос, вам нужно выбрать выпадающий список «Рабочая книга», и тогда я бы предположил, что вы обнаруживаете изменение, поэтому будет ли «SheetChange» правильным?

  3. Обнаружит ли макрос изменение в ячейке, которая скрыта, и может ли строка этой ячейки быть скрытой?

  4. Наконец, какого черта я даже пишу для обнаружения0 и скрывать / показывать ячейки, я пока что никому из них не помогал?

Спасибо за любую помощь, которую вы, ребята, можете оказать.

1 Ответ

2 голосов
/ 17 мая 2019

Чтобы ответить на ваши вопросы:

  1. Будет ли макрос, который воздействует на "Лист 2", пока я нахожусь на "Данные", помещен в "Лист 2" или в "ThisWorkbook"?

Неважно, где вы размещаете код, если код не запускается встроенным событием, таким как Worksheet_Change (). В этом случае он должен находиться на рабочем листе, в котором вы хотите обнаружить изменения. Если он не управляется событиями, я бы поместил код в его собственный модуль. Хотя каждому свое.

  1. Перед тем, как написать макрос, вам нужно выбрать раскрывающийся список "Рабочая книга", и тогда я бы предположил, что вы обнаруживаете изменение, так что "SheetChange" будет правильным?

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

  1. Обнаружит ли макрос изменение в ячейке, которая скрыта, и может ли строка этой ячейки быть скрытой?

Конечно! Почему бы и нет? Как пример:

Private Sub Worksheet_Change(ByVal Target As Range)

    'Detect if the change was in a cell we care about (it can be hidden, VBA don't care)
    If Not Intersect(Target, Column(3)) Is Nothing Then
        'Something changed in Column C! Unhide whatever row had the change
        Target.EntireRow.Hidden = False
    End If

End Sub
  1. Наконец, что, черт возьми, я даже пишу для того, чтобы обнаруживать 0 и скрывать / показывать ячейки, я не заставил никого из них сделать что-либо до сих пор?

Используя этот последний пример, чтобы обнаружить изменение определенного столбца, определить, была ли это только одна ячейка, определить, является ли эта единственная ячейка теперь 0 и скрыть ее строку:

Private Sub Worksheet_Change(ByVal Target As Range)

    'Detect if the change was in a cell we care about (it can be hidden, VBA don't care)
    If Not Intersect(Target, Column(3)) Is Nothing Then
        'Something changed in Column C!
        If Target.Cells.Count = 1 Then
            If Target.Value = "0" Then
                Target.EntireRow.Hidden = True
            End If
        End If
    End If

End Sub

Отметьте это в любом рабочем листе, который вы хотите обнаружить. Измените это первое значение If так, чтобы вы обнаруживали изменения только в том диапазоне, в котором ожидаете это изменение (в качестве примера я выбрал столбец C).

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