如何在excel中设置一个自动隐藏的按钮?

动作需求 · 1899 次浏览
华猪的 创建于 2023-02-07 15:01

 

如上图,我的设想是,一个表格中只有9行(其中前八行为数据填写,第九行为确认键)

当单元格F9显示为"是"的时候,右侧A列会自动填充为"完成"(还没改好,图片显示为"2"),

我的需求便是,A列中任一单元的值为"完成",则隐藏这一行,

之前用VBA

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 3 And .Count = 1 Then
If .Value = "完成" Then
.Rows.EntireRow.Hidden = True
End If
End If
End With
End Sub

这个VBA如果A列中的"完成"是通过公式得出的,则无法实现自动隐藏,只有手打的完成,才会自动隐藏。

不知道各位有没有好的办法?

💴💴可以交易


回复内容
湘喑 2023-02-07 15:25
#1

代码加到Worksheet_Calculate事件里就行了

华猪的 回复 湘喑 2023-02-07 16:12 :

这个好像不太符合我的需求,,,

/(ㄒoㄒ)/~~

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target

        If .Column = 6 And (.Row = 9 Or .Row = 18 Or .Row = 27) And .Count = 1 Then

            If .Value = "是" Then

                If .Row = 9 Then

                    Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(9, 1)).Value = "完成"

                    Rows("1:9").EntireRow.Hidden = True

                End If

                If .Row = 18 Then

                    Range(ActiveSheet.Cells(10, 1), ActiveSheet.Cells(18, 1)).Value = "完成"

                    Rows("10:18").EntireRow.Hidden = True

                End If

                If .Row = 27 Then

                    Range(ActiveSheet.Cells(19, 1), ActiveSheet.Cells(27, 1)).Value = "完成"

                    Rows("19:27").EntireRow.Hidden = True

                End If

            End If

        End If

    End With

End Sub

我换了一个,但是不知道怎么循环下去

华猪的 2023-02-07 16:13
#2

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target

        If .Column = 6 And (.Row = 9 Or .Row = 18 Or .Row = 27) And .Count = 1 Then

            If .Value = "是" Then

                If .Row = 9 Then

                    Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(9, 1)).Value = "完成"

                    Rows("1:9").EntireRow.Hidden = True

                End If

                If .Row = 18 Then

                    Range(ActiveSheet.Cells(10, 1), ActiveSheet.Cells(18, 1)).Value = "完成"

                    Rows("10:18").EntireRow.Hidden = True

                End If

                If .Row = 27 Then

                    Range(ActiveSheet.Cells(19, 1), ActiveSheet.Cells(27, 1)).Value = "完成"

                    Rows("19:27").EntireRow.Hidden = True

                End If

            End If

        End If

    End With

End Sub



怎么把这个变成循环啊~~~~

F列的9的倍数,

湘喑 回复 华猪的 2023-02-07 17:13 :

不用循环,判断target的行数是否为9的倍数就行了,if target.row mod 9 = 0 then

回复主贴