如果在工作表激活时相应单元格为“空白”/“公式为空”,则隐藏一列
我是VBAing的新手,但有less量的JavaScript知识,希望有一点指导/帮助,因为我似乎无法得到代码工作。 有可能有一些明显的错误,所以感谢耐心。
我试图得到一个电子表格来更新工作表的激活,其中将隐藏其第二行单元格为“空白”(或单元格中的公式x(y)为空)的列。
以下是迄今为止所尝试的。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "FSM" Then Function hideBlankColumns() i = 2 For i = 2 To 30 If IsNull(Cells(2, i).Value) = True Then Columns(i).EntireRow.Hidden = True Else: Columns(i).EntireRow.Hidden = False End If Next i End Function End If End Sub
提前致谢!
你的代码中有三个错误:
-
你不能在另一个子里面定义一个函数。
-
您正在讨论隐藏/取消隐藏列,但在代码中隐藏行:
Columns(lCol).EntireRow.Hidden = True
-
函数
IsNull
总是返回False
如果您传递Excel单元格或其值作为参数。 在这种情况下,您应该使用函数IsEmpty
代替。
此代码应该正常工作:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim i As Integer If Sh.Name = "FSM" Then For i = 2 To 30 Columns(i).EntireColumn.Hidden = IsEmpty(Cells(2, i).value) Next i End If End Sub
尝试这样的事情。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "FSM" Then lCol = 2 Do While lCol <= ws.UsedRange.Columns.count If IsNull(Cells(2, lCol).Value) = True Then Columns(lCol).EntireColumn.Hidden = True Else Columns(lCol).EntireColumn.Hidden = False End If lCol = lCol + 1 Loop End if End sub