dllplayer 发表于 2016-8-26 19:25

EXCEL VBA语言相关..怎么自动隐藏某行

本帖最后由 dllplayer 于 2016-8-26 20:43 编辑

RT
现在是这样...我在D18单元格写了一个IF函数..会返回"通过"和"抗剪不足"两个值.
然后希望在当返回的是通过的时候隐藏掉下面的大概3-5行..而返回抗剪不足的时候.显示下面的几行..好进行弯起钢筋相关的计算

根据搜索..按ALT+F11打开VBA界面..
然后在左边sheet1上双击..
复制进去如下一段
Private Sub Worksheet_Change(ByVal Target As Range)

    With Target

      If .Column = 18 And .Count = 4 Then

            If .Value = "通过" Then

                .Rows(22, 25).EntireRow.Hidden = True

            End If

      End If

    End With

End Sub


结果没反应......求各位大大能帮忙修改并说明下.....毕竟无编程基础..就靠推理和搜索在试验

后腿 发表于 2016-8-26 20:52

本帖最后由 后腿 于 2016-8-26 20:56 编辑

看描述还不太懂……我随便说下,首先这个过程在sheet有变化时触发,接受一个range参数,但是这里的target如果不是一个单元格,一般是左上角的,也就是程序认为的第一个,所以说后面的.count是永远只有1的,要判断框选的单元格数量要用selection.count,target.count=4没用,.column是列数,你D列是4,要表达行数是.row,然后后面target.rows(22,25)……会报错,不知为什么,单target.row(22)是target往下22行

    With Target
      If .Row = 18 and selection.count=4 Then
            If .Value = "通过" Then
                ActiveSheet.Rows(22,25).EntireRow.Hidden = True
            End If
      End If
    End With

这样就是当选中18行某单元格切选区正好是4格,且左上角单元格的值是"通过",就把当前sheet的22到25行隐藏
如果要表达刚好选中D18,则是 If .row= 18 and .column=4 Then


还没测自定义函数能不能隐藏行,我吃个饭回来试
页: [1]
查看完整版本: EXCEL VBA语言相关..怎么自动隐藏某行