我是VBAing的新手,但拥有少量的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
提前致谢!
答案 0 :(得分:0)
尝试这样的事情。
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
答案 1 :(得分:0)
您的代码中有三个错误:
你无法在另一个子区域内定义一个函数。
您正在谈论隐藏/取消隐藏列,但在代码中您隐藏了行:Columns(lCol).EntireRow.Hidden = True
函数IsNull
始终返回False
。在这种情况下,您应该使用函数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