Excel,VBA,show()hide()行

时间:2015-01-09 16:06:34

标签: excel-vba excel-formula vba excel

我试图根据单元格的内容隐藏/显示一系列行。使用下面的代码,但我不断收到#name错误

Function HURows(ByVal rng As Range)
    If rng.Value = "TRUE" Then
        Range("C8:L23").Hidden = True
        Str = "Hidden"
    Else
        Range("C8:L23").Hidden = False
        Str = "Shown"
    End If

    HURows = Str
End Function

此代码已放置在Sheet1(Sheet1)VBA代码的部分中,并在Sheet1 =HURows(C3)中使用。

2 个答案:

答案 0 :(得分:1)

您至少有两个问题:

  1. UDF 只能返回值而不能隐藏/取消隐藏行
  2. 隐藏应该应用于整行而不仅仅是一个单元格块

    可能还有其他问题

答案 1 :(得分:0)

正如Gary所说,函数只能显示一个值,你需要一个宏来隐藏和取消隐藏行。

我们可以使用工作表事件来使代码自动运行,但您必须提供更多详细信息。与此同时,这里有一些代码可以帮助您入门。

Sub HideRws()
    Dim HidRw As Range, x, s As String
    Dim rng As Range
    Set rng = Range("A1")
    Set HidRw = Range("C8:L23")
    HidRw.EntireRow.Hidden = False
    x = IIf(rng = "True", 1, 0)
    s = IIf(rng = "True", "Hidden", "Shown")

    HidRw.EntireRow.Hidden = x
    rng.Offset(0, 1) = s

End Sub