excel - 如果指定单元格为空,则隐藏整个给定行
问题描述
我是 VBA 编码的新手。
我正在尝试在我的功能中实现这一点
sub Private Sub Worksheet_Change(ByVal Target As Range)
它检查一些指定的单元格值更改以运行给定的宏。我要添加的附加宏是,当单元格 a62 为空时,它将隐藏行 a56:a61。并且连续如果 a82 为空,它将隐藏行 a78:a82。
我有以下代码,但它只隐藏从第一个空单元格到工作表末尾的行。
Sub Test()
Dim i As Long
For i = 4 To 800
If Sheets("Results").Cells(i, 1).Value = "" Then
Rows(i & ":" & Rows.Count).EntireRow.Hidden = True
Rows("1:" & i - 1).EntireRow.Hidden = False
Exit Sub
End If
Next
End Sub
解决方案
请检查下一个事件代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$62" Or Target.Address = "$A$82" Then
Select Case Target.Address
Case "$A$62"
If Target.Value = "" Then
Range("A56:A61").EntireRow.Hidden = True
Else
Range("A56:A61").EntireRow.Hidden = False
End If
Case "$A$82"
If Target.Value = "" Then
Range("A78:A81").EntireRow.Hidden = True
Else
Range("A78:A81").EntireRow.Hidden = False
End If
End Select
End If
End Sub
仅当您手动更改两个所需单元格之一的值时才会触发它。
如果它们的值是公式的结果,则Worksheet_Calculate
必须使用事件,但方式不同。此事件没有任何参数(无目标),您必须检查讨论中的两个单元格并根据它们的值采取行动,与触发计算事件时它们是否已更改无关。如果是这种情况,我也可以发布这样的事件代码。
编辑:
对于不涉及手动更改值的版本,请将该事件代码复制到工作表代码模块中:
Private Sub Worksheet_Calculate()
If Me.Range("A62").Value = "" Then
Me.Range("A56:A61").EntireRow.Hidden = True
Else
Me.Range("A56:A61").EntireRow.Hidden = False
End If
If Me.Range("A82").Value = "" Then
Me.Range("A78:A82").EntireRow.Hidden = True
Else
Me.Range("A78:A82").EntireRow.Hidden = False
End If
'Edited:
'The part for both analyzed ranges being empty:
If Me.Range("A62").Value = "" And _
Me.Range("A82").Value = "" Then
'Do here what you need...
End If
End Sub
推荐阅读
- python - 比较两列分类数据
- c++ - Win32 事件处理 - 检查充电器是否已插入
- html - 里面的文字没有出现在使用 importxml 的谷歌表格中
- python - Django:多对多关系的值列表
- reactjs - 未使用功能组件更新子组件
- javascript - Rails vuejs获取iframe元素的高度
- java - 为什么我在复制和粘贴输入时收到 StringIndexOutOfBoundsExceptiuon?
- powershell - 在 Powershell 中运行“Invoke-SSHCommand”时会引发异常,因为无法找到“SSHSession”参数
- php - 如何在 PHP 标签中使用 Laravel 值
- ipad - Shapr3D ipad app是用什么编程编写的?