Vba 如果对应单元格为“0”,则隐藏列;是空白的/&引用;“公式为空”;在活页上';s激活
我是VBAing新手,但有少量javascript知识,希望得到一些指导/帮助,因为我似乎无法让代码正常工作。可能有一些明显的错误,所以谢谢你的耐心 我正在尝试获取一个电子表格,以便在激活工作表时更新该工作表,其中它将隐藏第二行单元格为“空白”(或单元格中的公式x(y)为空)的列 以下是迄今为止我们所做的尝试Vba 如果对应单元格为“0”,则隐藏列;是空白的/&引用;“公式为空”;在活页上';s激活,vba,excel,Vba,Excel,我是VBAing新手,但有少量javascript知识,希望得到一些指导/帮助,因为我似乎无法让代码正常工作。可能有一些明显的错误,所以谢谢你的耐心 我正在尝试获取一个电子表格,以便在激活工作表时更新该工作表,其中它将隐藏第二行单元格为“空白”(或单元格中的公式x(y)为空)的列 以下是迄今为止我们所做的尝试 Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = "FSM" Then Function h
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
提前谢谢 试试这样的东西
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
Private子工作簿\u SheetActivate(ByVal Sh作为对象)
如果Sh.Name=“FSM”,则
lCol=2
当lCol时,尝试这样的方法
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
Private子工作簿\u SheetActivate(ByVal Sh作为对象)
如果Sh.Name=“FSM”,则
lCol=2
执行lCol时,代码中有三个错误:
- 不能在另一个子系统中定义函数
- 您正在谈论隐藏/取消隐藏列,但在代码中隐藏行:
columns(lCol).EntireRow.Hidden=True
- 如果将Excel单元格或其值作为参数传递,则函数
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
您的代码中有三个错误:
- 不能在另一个子系统中定义函数
- 您正在谈论隐藏/取消隐藏列,但在代码中隐藏行:
columns(lCol).EntireRow.Hidden=True
- 如果将Excel单元格或其值作为参数传递,则函数
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
你的代码结果是什么?你不需要:in-Else:你的代码结果是什么?你不需要:in-Else:谢谢,这是有效的,除非单元格中有公式时不能为空,这有点烦人。但是,因为我隐藏了行,所以我编辑了公式以生成“0”,并将IsNull()行改为If Cells(2,lCol)=0。非常感谢!谢谢,这是有效的,除非单元格中有公式时不能为空,这有点烦人。但是,因为我隐藏了行,所以我编辑了公式以生成“0”,并将IsNull()行改为If Cells(2,lCol)=0。非常感谢!感谢这项工作,除了公式单元格不能被归类为空,但一旦我隐藏单元格,我就将其更改为等于0,并在单元格上隐藏=0。干杯感谢这项工作,除了公式单元格不能被归类为空,但一旦我隐藏单元格,我就将其更改为等于0,并在单元格上隐藏=0。干杯