vba - 根据数据条目的单元格值取消隐藏行 - 刷新错误

标签 vba excel

我设置了一个工作表,允许用户从单元格 (B23) 的数据验证列表中选择预设选项。用户从这个单元格中选择将触发某些行被取消隐藏,引导用户仅将数据输入到适当的行中。我用于取消隐藏相应行的 VBA 代码工作正常,除了以下事实:每当用户将数据输入到未隐藏的行之一时,所有行都将隐藏。然后,用户需要从初始数据验证列表(单元格 B23)中重新选择他们的选项,以再次取消隐藏相应的行。他们输入的值已输入并保存在单元格中,但他们需要在每个数据输入步骤之间重新选择他们的初始选择,这很烦人,也是我想解决的问题。

我怀疑: 1)我一起蹒跚而行的VBA代码没有考虑到用户将数据输入到隐藏的行/将被触发取消隐藏的事实,和/或 2) 问题的症结在于使用触发哪些行被取消隐藏的数据验证列表 (B23) 刷新单元格。不幸的是,我不知道该怎么做。

任何帮助将不胜感激!!

我隐藏行的 VBA 代码如下。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim allRows As Range

Set allRows = Rows("27:64")
allRows.Hidden = True

If Not Intersect(Target, Range("B23")) Is Nothing Then
    If Target.Value = "A1" Then
        Rows("27:31").Hidden = False
    ElseIf (Target.Value = "A10-A-S" Or Target.Value = "A10-A-P" Or Target.Value = "A10-A-T") Then
        Rows("32:36").Hidden = False
    ElseIf (Target.Value = "A10-B-S" Or Target.Value = "A10-B-P" Or Target.Value = "A10-B-T") Then
        Rows("37:44").Hidden = False
    ElseIf (Target.Value = "E19S" Or Target.Value = "E19P" Or Target.Value = "E19T") Then
        Rows("46:54").Hidden = False
    ElseIf (Target.Value = "E20S" Or Target.Value = "E20P" Or Target.Value = "E20T") Then
        Rows("56:64").Hidden = False
    End If
End If

End Sub

最佳答案

你是对的,只要有人更改工作表上的任何内容Worksheet_Change 事件就会触发并隐藏这些行。

一个简单的选择可能是将该代码包装在检查更改是否由下拉菜单触发的检查中:

With Target
    If .Count = 1 Then
        If .Row = 23 And .Column = 2 Then ' Assumes your list result is B23?
           allRows.Hidden = True
           ' do your other checks and updates here...
        End If    
    End If
End With

关于vba - 根据数据条目的单元格值取消隐藏行 - 刷新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279939/

相关文章:

vba - 如何返回用户定义类型的数组,然后在 VBA 中作为参数传递

excel - 如果输入了某个数字,则为单元格着色

vba - Excel VBA - 连接变量

excel - 如何在 Excel 加载项中保存用户首选项?

mysql - 使用 ODBC 连接器的 VBA/MySQL 问题

vba - excel 说 6 月的日期大于 7 月的日期 - 为什么?

excel - 基于文本字段的 Excel 数据透视表中的条件格式

excel - 使用 VBA 保存和关闭办公程序(word、excel、access、outlook)以进行备份

excel - 获取 Excel 元数据

excel - 使用宏刷新 Excel 工作簿中的所有数据透视表