隐藏/取消隐藏excel中的特定行时要更改的单元格值?

时间:2018-06-21 11:32:35

标签: excel vba hide rows

我目前正在使用excel工作表,其中已将行1-17分组并在单元格B18中写入了单元格值。我想知道是否有一种方法可以在扩展/折叠行时单击+/-符号时更改B18中的值。

例如:当我单击加号时,我希望B18中的单元格值为“是”,而当单击负号时,我希望其值为“否”。有什么办法吗?

亲切的问候, 桑德拉

1 个答案:

答案 0 :(得分:2)

您好,欢迎来到Stack Overflow!

通常,您应该始终提供以前尝试的证明(代码),这不仅有助于我们更好地理解您要实现的目标,而且还因为其背后的核心原则这个网站是为了帮助人们编写代码,而不是为他们编写代码!


无论哪种方式,鉴于这是您的第一个问题,而您想要实现的目标都相当容易实现,所以我会尽力而为。

尽管我的答案取决于您最初要实现的目标,但是您的初始问题尚不清楚。

  1. 如果所有行(1:17)都隐藏了

    Private Sub check_hidden_area()
      If Rows("1:17").EntireRow.Hidden = True Then
        Range("B18") = True
      Else
        Range("B18") = False
      End If 
    End Sub
    
  2. 如果(1:17)中至少有1行被隐藏:

    Private Sub check_hidden_area()
    Range("B18") = False
      For i = 1 To 17
         If Rows(i).EntireRow.Hidden = True Then
           Range("B18") = True
           Exit For
         End If
      Next i
    End Sub
    

PS /说明:列出的过程确实可以工作,但是到目前为止,除非您手动启动它们,否则它们不会自动触发(启动)。不幸的是,不可能触发“ +/-”按钮上的代码。

  1. 最正确的方法是在每次工作表更改时触发宏,但是这会降低程序的速度并占用CPU /内存,尤其是在处理较大数据范围时,尤其如此< / p>

    Private Sub Worksheet_Change (ByVal Target as Range)
       '...
       Call check_hidden_area
    End Sub
    
  2. 或者仅创建一个按钮(或其他方法),然后在_Click触发器上调用该过程,例如。

    Private Sub CommandButton1_Click 
       Call check_hidden_area
    End Sub