[英]Testing multiple columns for zero values at once?
(我不是程序员,也不知道我在做什么。这是我的第一个VBA项目)
因此,我试图隐藏具有零值的列。 到目前为止,多亏了excelribbon.tips.net,我已经设法使它与以下(缩写)代码一起使用
Sub HideColumn1()
If Range(“H5”).Value = 0 Then
Columns(“H”).EntireColumn.Hidden = True
Else
Columns(“H”).EntireColumn.Hidden = False
End If
‘Repeat for everything between H and AG
If Range(“AG5”).Value = 0 Then
Columns(“AG”).EntireColumn.Hidden = True
Else
Columns(“AG”).EntireColumn.Hidden = False
End If
End Sub
必须有一种不包含180行重复代码的方法来执行此操作? 另外,运行时,大概需要十秒钟才能分别遍历所有列,并且图表会出现诱发癫痫的闪烁,我真的很希望它一次完成所有操作。 我尝试将其更改为
If Range(“H5:AG5”).Value = 0 Then
Columns(“H:AG”).EntireColumn.Hidden = True
Else
Columns(“H:AG”).EntireColumn.Hidden = False
End If
但这没用。 为了更全面,我也尝试将其更改为Range(“ H5”,.....“ AG5”)和Columns(“ H5”,....“ AG5”),尽管我确实没有希望它能工作。
谁能帮我吗?
非常感谢大家!!!
伟大的第一次尝试西尔菲! 您可以使用循环遍历每一列并检查该列的第5行。 另外,要摆脱闪烁,您可以关闭ScreenUpdating
,然后在代码完成后将其重新打开:
Sub HideColumn1()
Dim i As Long
Application.ScreenUpdating = False
For i = 8 To 33 'H through AG
If Cells(5, i).Value = 0 Then
Columns(i).EntireColumn.Hidden = True
Else
Columns(i).EntireColumn.Hidden = False
End If
Next i
Application.ScreenUpdating = True
End Sub
这将取消隐藏所有列,并立即循环并隐藏所有正确的列。 应该快速干净。
Sub HideColumn1()
ActiveSheet.Columns("H:AG").Hidden = False
For j = 8 To 33
If ActiveSheet.Cells(5, j).Value = 0 Then
Dim rng As Range
If rng Is Nothing Then
Set rng = ActiveSheet.Cells(5, j)
Else
Set rng = Union(ActiveSheet.Cells(5, j), rng)
End If
End If
Next j
rng.EntireColumn.Hidden = True
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.