Можно ли сделать так, чтобы следующий код также отображал строки, если на другом листе введено другое значение? - PullRequest
1 голос
/ 08 ноября 2019

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

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim beginRow As Long, endRow As Long, chkCol As Long, rowCnt As Long
  Dim rngResult As Range
  Dim ws As Worksheet

  beginRow = 3
  endRow = 38
  chkCol = 14

  Set ws = ThisWorkbook.Worksheets("Travel Expense Codes")

  For rowCnt = endRow To beginRow Step -1
    If Cells(rowCnt, chkCol).Value = "X" Then
      ws.Cells(rowCnt, chkCol).EntireRow.Hidden = True
    End If
  Next rowCnt

End Sub

1 Ответ

1 голос
/ 08 ноября 2019

Если я правильно понимаю:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

  Const beginRow as Long = 3  '<< use Const for fixed values
  Const endRow as Long = 38
  Const chkCol as Long = 14

  Dim rowCnt As Long
  Dim ws As Worksheet

  Set ws = ThisWorkbook.Worksheets("Travel Expense Codes")

  For rowCnt = endRow To beginRow Step -1
       With ws.Cells(rowCnt, chkCol) 
           .EntireRow.Hidden = (.Value = "X")
       End With
    End If
  Next rowCnt

End Sub

РЕДАКТИРОВАТЬ: уточнить - приведенный выше код является более короткой версией чего-то подобного

   With ws.Cells(rowCnt, chkCol)
       If .Value = "X" Then 
           .EntireRow.Hidden = True
       Else
           .EntireRow.Hidden = Fasle
       End If
   End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...