我有一个出勤跟踪器,用于发送班次结束报告。目前,我全班的出席节目。我想创建一个隐藏0次错过行的宏。
Blank Tracker 2.0是书的名称Pulse Template是工作表的名称我需要的宏F是我记录时间错过的列(从另一张表中绘制)18-46是需要隐藏的行或者没有隐藏。
所以如果F18为0,我需要隐藏它。如果F18> 0,我需要它可见。
我认为这是一个相当简单的宏,但我基本上没有使用任何宏的经验。
一种有效的方法是使用Union
收集所有行以隐藏,然后一次性隐藏所有行。此外,此代码检查值实际上是单元格中的数字。
您可以将此绑定到form控件或ActiveX按钮,如前面的答案中所述。
Sub hideRows()
Dim wb As Workbook
Dim wsSource As Worksheet
Set wb = ThisWorkbook
Set wsSource = wb.Worksheets("Sheet7")
Dim loopRange As Range
Dim currRow As Range
Dim hideRange As Range
Set loopRange = wsSource.Range("F18:F46")
loopRange.EntireRow.Hidden = False
For Each currRow In loopRange.Rows
If IsNumeric(currRow.Value2) And currRow.Value2 = 0 Then
If Not hideRange Is Nothing Then
Set hideRange = Union(currRow, hideRange)
Else
Set hideRange = currRow
End If
End If
Next currRow
If Not hideRange Is Nothing Then hideRange.EntireRow.Hidden = True
End Sub
这个怎么样...
Sub HideRowsLoop()
For Each cell In Worksheets("Pulse Template").Range("C18:C46")
If cell.Value = "0" Then
cell.EntireRow.Hidden = True
End If
Next cell
End Sub
把它放在一个activeX按钮事件上。如果F18到F46为0,则隐藏,如果不是,则显示。
Sub button_click()
Dim i as integer
For i = 18 to 46
If Activesheet.Range("F" & i) = 0 Then
Activesheet.Range("F" & i).entireRow.Hidden = True
else
Activesheet.Range("F" & i).entireRow.Hidden = False
End If
Next i
End Sub