【发布时间】:2018-04-17 01:47:51
【问题描述】:
这是我当前的代码。如果找到隐藏行,它会在行周围放置红色边框,一个 MsgBox 详细说明隐藏了哪些行,并将隐藏行的大小调整为 15 的高度。除非隐藏的行是该范围内的最后一行,否则它可以正常工作。如果它们是范围中的最后一行,则此代码会取消隐藏它们,但不会应用红色边框,并且 MsgBox 不会将这些行包含在报告的隐藏行列表中。
这是因为如果最后一行被隐藏,这种查找最后一行的方法不起作用吗?还是该方法可以接受,我只需要添加/更改一些东西?
Sub UnhideRows()
Dim LastRow As Integer
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim rng As Range
Dim r As Range
Dim sTemp As String
Set rng = Range("A84:A" & LastRow)
sTemp = ""
For Each r In rng.Rows
If r.EntireRow.Hidden = True Then
sTemp = sTemp & "Row " & Mid(r.Address, 4) & vbCrLf
r.EntireRow.Hidden = False
With Range("A" & r.Row & ":W" & r.Row).Borders(xlEdgeLeft)
.Color = -16776961
.Weight = xlMedium
End With
With Range("A" & r.Row & ":W" & r.Row).Borders(xlEdgeTop)
.Color = -16776961
.Weight = xlMedium
End With
With Range("A" & r.Row & ":W" & r.Row).Borders(xlEdgeBottom)
.Color = -16776961
.Weight = xlMedium
End With
With Range("A" & r.Row & ":W" & r.Row).Borders(xlEdgeRight)
.Color = -16776961
.Weight = xlMedium
End With
End If
Next r
If sTemp <> "" Then
sTemp = "The following rows were hidden:" & vbCrLf & _
vbCrLf & sTemp
MsgBox sTemp
Else
End If
Cells.rowheight = 15
End Sub
【问题讨论】: