如果在工作表激活时相应单元格为“空白”/“公式为空”,则隐藏一列

我是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