![用于隐藏表中行的 VBA 代码(听起来很复杂)](https://linux22.com/image/1571745/%E7%94%A8%E4%BA%8E%E9%9A%90%E8%97%8F%E8%A1%A8%E4%B8%AD%E8%A1%8C%E7%9A%84%20VBA%20%E4%BB%A3%E7%A0%81%EF%BC%88%E5%90%AC%E8%B5%B7%E6%9D%A5%E5%BE%88%E5%A4%8D%E6%9D%82%EF%BC%89.png)
最后一篇帖子已被删除——“之前被问过”——请阅读全文:)
基本上,我有一张大表格(500 行),我只需要根据某个单元格中的值显示行数(如果该单元格中的值为 123,则仅显示前 123 行)。这是表格前 25 行的图片
我想实现这个没有编写 500 个“if”语句,如下所示:
Private Sub PG1(ByVal Target As Range)
If .Range("A1").Value = "123" Then
Rows("124:500").EntireRow.Hidden = True
End If
If .Range("A1").Value = "124" Then
Rows("125:500").EntireRow.Hidden = True
End If
End Sub
谢谢你!
答案1
这应该可行。从t()
技术上讲,你可以用 来调用它。我不知道你需要目标引用来做什么,但这对我来说是有效的。
Sub t()
PG1 (Worksheets("Sheet1").Range("A1"))
End Sub
Private Sub PG1(ByVal target As Range)
' Why do you need `target` at all?
Dim lastRow As Long
With Worksheets("Sheet1") ' CHANGE AS NEEDED
lastRow = .Range("A1").Value
.Range("A1:A" & lastRow).EntireRow.Hidden = False
.Range("A" & lastRow + 1 & ":A500").EntireRow.Hidden = True
End With
End Sub
这也不是相对的,它假设您的表格实际上是按行排列的1:500
。
答案2
Private Sub PG1(ByVal Target As Range)
.Range("A" & .Range("A1").Value & ":A500").EntireRow.Hidden = True
End Sub