VBA скрыть строки с несколькими условиями - PullRequest
0 голосов
/ 13 марта 2020

Мне нужна помощь, чтобы скрыть строки, если (будем использовать строки 148-149 в качестве примера):

Если значение параметра либо J, либо P 148> 0, и J AND P 149 = 0, то 149 должно скрыть .

ЕСЛИ либо J ИЛИ P 149> 0 ТОГДА ОБА 148 И 149 должны показать

ЕСЛИ значение> 0 в J ИЛИ P 148 И J ИЛИ P 149> 0, то показать 148 И 149

Example

This should be the final result

    Sub Skjul_0_Storkundeaftale()
 Dim beginRow As Long, endRow As Long, CheckCol_1 As Long, rngHide As Range
  beginRow = 148 'first row'
  endRow = 176 'last row'
  CheckCol_1 = 10 'column number --> O'

For rowNum = beginRow To endRow
    If Cells(rowNum, CheckCol_1).Value <= 0 And Cells(rowNum + 1, CheckCol_1).Value = "" Then
        Cells(rowNum, CheckCol_1).EntireRow.Hidden = True
    End If
Next rowNum
End Sub

Ответы [ 3 ]

1 голос
/ 16 марта 2020

Вот новый код. Возможно, не лучшее кодирование, но оно делает свое дело:)

Sub Skjul_0_Storkundeaftale()

beginRow = 148 'first row'
endRow = 176 'last row'
CheckCol_1 = 4 'column number --> Gulvarme
CheckCol_2 = 10 'First column
CheckCol_3 = 16 'Second column

For rowNum = beginRow To endRow
    If Cells(rowNum, CheckCol_1).Value <> "" And Cells(rowNum + 1, CheckCol_2).Value = 0 And Cells(rowNum + 1, CheckCol_3).Value = 0 Then
        Cells(rowNum + 1, CheckCol_1).EntireRow.Hidden = True

    End If
Next rowNum

For rowNum = beginRow To endRow
    If Cells(rowNum, CheckCol_1).Value <> "" And Cells(rowNum, CheckCol_2).Value = 0 And Cells(rowNum, CheckCol_3).Value = 0 _
    And Cells(rowNum + 1, CheckCol_2).Value = 0 And Cells(rowNum + 1, CheckCol_3).Value = 0 Then
        Cells(rowNum, CheckCol_1).EntireRow.Hidden = True

    End If
Next rowNum


End Sub
0 голосов
/ 13 марта 2020
Sub Skjul_0_Storkundeaftale()

beginRow = 148 'first row'
endRow = 176'last row'
CheckCol_1 = 10 'column number --> O'
CheckCol_2 = 2 ' column b

For rowNum = beginRow To endRow
    If Cells(rowNum, CheckCol_2).Value <> "" And Cells(rowNum + 1, CheckCol_1).Value = 0 Then
        Cells(rowNum, CheckCol_1).EntireRow.Hidden = True

       End If
    Next rowNum

End Sub

Вы можете использовать что-то вроде этого. Вы все еще можете перемещаться по номерам строк в скобках. Поэтому, если вы хотите проверить 1 строку ниже, вы просто делаете rowNum + 1. Вы также можете добавить другие правила «И» из «ЕСЛИ» в свой код.

0 голосов
/ 13 марта 2020

Попробуйте следующий код, пожалуйста:

Sub Skjul_0_Storkundeaftale()
 Dim beginRow As Long, endRow As Long, rowNum As Long
  beginRow = 148 'first row'
  endRow = 176  'last row'

 For rowNum = beginRow To endRow
    If Cells(rowNum, "P").value <= 0 Or Cells(rowNum, "J").value <= 0 Then
        If Len(Cells(rowNum, "P").value) <> 0 Then
            If Len(Cells(rowNum + 1, "P").value) <> 0 Then
                If Cells(rowNum + 1, "P").value = 0 And _
                    Cells(rowNum + 1, "J").value = 0 And _
                        Cells(rowNum + 2, "J").value = Empty Then
                    Cells(rowNum + 1, "P").EntireRow.Hidden = True
                    rowNum = rowNum + 1
                End If
            End If
        End If
    End If
 Next rowNum
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...