我目前正在使用excel工作表,其中已将行1-17分组并在单元格B18中写入了单元格值。我想知道是否有一种方法可以在扩展/折叠行时单击+/-符号时更改B18中的值。
例如:当我单击加号时,我希望B18中的单元格值为“是”,而当单击负号时,我希望其值为“否”。有什么办法吗?
亲切的问候, 桑德拉
答案 0 :(得分:2)
您好,欢迎来到Stack Overflow!
通常,您应该始终提供以前尝试的证明(代码),这不仅有助于我们更好地理解您要实现的目标,而且还因为其背后的核心原则这个网站是为了帮助人们编写代码,而不是为他们编写代码!
无论哪种方式,鉴于这是您的第一个问题,而您想要实现的目标都相当容易实现,所以我会尽力而为。
尽管我的答案取决于您最初要实现的目标,但是您的初始问题尚不清楚。
如果所有行(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
如果(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 /说明:列出的过程确实可以工作,但是到目前为止,除非您手动启动它们,否则它们不会自动触发(启动)。不幸的是,不可能触发“ +/-”按钮上的代码。
最正确的方法是在每次工作表更改时触发宏,但是这会降低程序的速度并占用CPU /内存,尤其是在处理较大数据范围时,尤其如此< / p>
Private Sub Worksheet_Change (ByVal Target as Range)
'...
Call check_hidden_area
End Sub
或者仅创建一个按钮(或其他方法),然后在_Click
触发器上调用该过程,例如。
Private Sub CommandButton1_Click
Call check_hidden_area
End Sub