我设置了一个工作表,允许用户从单元格 (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/