[英]How to hide and unhide rows based on a cell value?
我有一个 Excel 电子表格,其中包含要填写问题的选项卡。
我计算了列数以确保我有正确的列,并使用调试器逐步遍历代码以查看它读出的值。 这些值似乎都井然有序。
内容(大部分)是机密的,空的太多了,所以我将尝试以这种方式向您展示:
我想根据单元格的值隐藏或显示问题。 0 表示隐藏,1 表示显示。
我发现代码可以随意隐藏和取消隐藏。
Sub CheckRoleQuestionsSimplified()
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Cockpit" Or ws.Name = "I-CBO" Or ws.Name = "config" Or ws.Name = "BegeleidingsFormulier" Or ws.Name = "Inhoudsopgave" Or ws.Name = "Saldibalans" Then
' Sla deze over, doe niks
Else
Worksheets(ws.Name).Activate
End If
Next ws
beginRow = 10
endRow = 46
checkCol = 25
Do While rowNum < endRow
If Cells(rowNum, checkCol).Value = 0 Then
Cells(rowNum, checkCol).EntireRow.Hidden = True
Else
If Cells(rowNum, checkCol).Value = 1 Then
Cells(rowNum, checkCol).EntireRow.Hidden = False
End If
End If
Next rowNum
End Sub
使用 With 语句。 并使用 isEmpty 函数。
Sub CheckRoleQuestionSimplified()
Dim Ws As Worksheet
Dim Target As Range
Dim rowNum As Integer, endRow As Integer, checkCol As Integer
For Each Ws In ThisWorkbook.Worksheets
Select Case Ws.Name
Case "Cockpit", "I-CBO", "config"
Case Else
With Ws
beginRow = 10
endRow = 46
checkCol = 25
For rowNum = beginRow To endRow
Set Target = .Cells(rowNum, checkCol)
Target.EntireRow.Hidden = False
If Not IsEmpty(Target) Then '<~~ check Empty
If Target.Value = 0 Then
Target.EntireRow.Hidden = True
Else
If Target.Value = 1 Then
Target.EntireRow.Hidden = False
End If
End If
End If
Next rowNum
End With
End Select
Next Ws
End Sub
这应该有效:
Dim ws As Worksheet
Dim beginRow As Long, endRow As Long, checkCol As Long
beginRow = 10
endRow = 46
checkCol = 25
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = "Cockpit" Or ws.Name = "I-CBO" Or ws.Name = "config" Or ws.Name = "BegeleidingsFormulier" Or ws.Name = "Inhoudsopgave" Or ws.Name = "Saldibalans" Then
' do nothing
Else
For rowNum = beginRow To endRow Step 2
With ws.Cells(rowNum, checkCol)
.Resize(2, 1).EntireRow.Hidden = .Value = 0
End With
Next rowNum
End If
Next ws
根据您的屏幕截图,此过程依赖于0
或1
仅位于偶数行中。
注意:如果您希望隐藏所有空行,请改用以下循环:
For rowNum = beginRow To endRow
With ws.Cells(rowNum, checkCol)
.EntireRow.Hidden = .Value = 0
End With
Next rowNum
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.