Vba 如果对应单元格为“0”,则隐藏列;是空白的/&引用;“公式为空”;在活页上';s激活

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

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

提前谢谢

试试这样的东西

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。干杯