Скрыть весь ряд и показать, когда закончите - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь скрыть строки в столбце A, которые содержат «0», но не отображать столбцы, если введено значение> 0

Я пробовал этот код.Когда значение> 0 и скрытые строки появляются, в столбце B появляется дата, и она ошибается в остальной части моей информации на листе.Я попытался закомментировать OffsetStoredDateColumnNumber вместе с другими строками, которые используют это, и я просто получаю ошибки.

Другая информация в следующих ячейках использует VLOOKUP, который извлекает данные из другой вкладки (номер детали,описание детали и цены).

Sub HideTodaysZeroValues()
    Dim c As Range
    Dim OffsetStoredDateColumnNumber As Integer ' makes it easier to edit the column number
    OffsetStoredDateColumnNumber = 1
    For Each c In Range("A25:A52")
        If c.Value = "0" Then ' If Col A is zero
            'Check if stored date column is populated
            If Len(c.Offset(0, OffsetStoredDateColumnNumber).Value) > 0 Then
                'if it is populated, compare date with now, and if its equal to 1, show it
                If DateDiff("d", c.Offset(0, 1).Value, Now()) > 0 Then
                    c.EntireRow.Hidden = False
                Else
                    'else hide it and store the date it was hidden
                    'As its stands right now this code will only unhide the rows from yesterday, any older rows will be rehiddne
                    'If this is not desired, change the "= 1" above, to be " > 0"
                    c.Offset(0, OffsetStoredDateColumnNumber).Value = Now()
                    c.EntireRow.Hidden = True
                End If
            Else
                'comes here if stored date is not populated, which will happen first time a row needs to be hidden
                c.Offset(0, OffsetStoredDateColumnNumber).Value = Now()
                c.EntireRow.Hidden = True
            End If
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
End Sub

Когда появятся строки, я бы хотел, чтобы данные из VLOOKUP были вставлены вместо даты и времени, когда ячейка была скрыта с использованием кода выше.

1 Ответ

0 голосов
/ 11 июня 2019

Я предполагаю, что вы получили этот код из интернета, и он скрывает строку, если 0 в первом столбце, с другими критериями.

Он также проверяет столбец B на наличие даты, и, если разница в дате и сегодня равна >0, она будет показывать строку, или, если дата равна Today, она будет скрыватьстрока.Если в столбце B указано no date, он добавит сегодняшнюю дату .

Я также буду считать, что у вас нет дат в столбце B, и когда код вставляет датуон испортит любые ваши формулы.

Тем не менее, я покажу вам два способа скрывать и показывать строки.один без дат в столбце B, а другой с датами в столбце B, на случай, если у вас есть даты.

Сначала перейдите на вкладку «Разработчики» и нажмите «Visual Basic», добавьте следующие подпункты к ThisWorkbook окно кода.

Sub HideIf0()
'This sub will hide rows if the first cell is 0
    Dim c As Range
    For Each c In Range("A25:A52")

        If c.Value = "0" Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next
End Sub

Sub HideIf0andToday()
    'This sub will hide rows if the first cell is 0 and the cell to the right is todays date

    Dim c As Range
    For Each c In Range("A25:A52")

        If c.Value = "0" And c.Offset(, 1).Value = Date Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If

    Next
End Sub


Sub UnhideRng()
'This sub will allow you to unhide all the rows when you are done
    Range("A25:A52").EntireRow.Hidden = False
End Sub

enter image description here Данные испытаний

enter image description here Скрыть, если 0

enter image description here Скрыть, если 0 и Сегодня

Вам необходимо добавить 2 кнопки на рабочий лист.Назовите одно «Скрыть», а другое «Показать» Почему?потому что запускать код, чтобы скрыть строки, а затем сразу же показывать строки в одном и том же коде, бесполезно.

  • Кнопки добавления: перейдите на вкладку «Разработчики» и нажмите «Вставить» в разделе «Элементы управления», нажмите «Кнопка»в разделе «Контроль формы».Нарисуйте две кнопки на вашем листе.Переименуйте одну «Скрыть», а другую - «Показать»

Щелкните правой кнопкой мыши кнопку «Скрыть» и выберите «Назначить макрос»;Если у вас нет даты в столбце B, выберите макрос «ThisWorkBook.HideIf0».Если у вас есть даты в столбце B, выберите «ThisWorkbook.HideIf0andToday»

Щелкните правой кнопкой мыши кнопку «Показать» и нажмите «Назначить макрос», выберите «ThisWorkbook.UnhideRng»

Перейти квыберите рабочий лист и ячейку, чтобы отменить щелчок по кнопке, а затем нажмите кнопку «Скрыть». По завершении просмотра данных можно нажать кнопку «Показать».

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