gpt4 book ai didi

Excel VBA基于多个条件隐藏行

转载 作者:行者123 更新时间:2023-12-04 20:21:10 25 4
gpt4 key购买 nike

我仍在学习 VBA,但已经开始将我在 Google 和 Stackoverflow 上找到的东西放在一起。但我似乎无法解决我的问题,所以感谢您的帮助。
我正在创建一个包含不同项目列表的文档,我希望根据某些下拉菜单显示或隐藏这些项目。
到目前为止,我已经做到了这一点,但是我遇到了一个问题,即单元格 E30 中的一个下拉框是有条件的。
[更新]
我需要的是:
如果 E30 = '否' AND E6 = 'VIC'
然后第 1:45 行没有隐藏并且第 46:81 行被隐藏
如果 E30 = '是' AND E6 = 'VIC'
然后第 1:33 行未被隐藏并且第 34:81 行被隐藏
如果 E30 = '否' AND E6 = '其他'
然后第 1:33 行和第 64:81 行未被隐藏并且第 34:63 行被隐藏
如果 E30 ='是' AND E6 ='其他'
然后第 1:33 行未被隐藏并且第 34:81 行被隐藏
以下是我到目前为止的代码。第一组按设计工作,但第二组是我遇到问题的上述部分代码。
希望这是有道理的,感谢您提前提供的所有帮助。

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("E19"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value

Case Is = "NO": Rows("34:81").EntireRow.Hidden = True
Rows("1:22").EntireRow.Hidden = False
Rows("23:33").EntireRow.Hidden = False
Case Is = "YES": Rows("23:81").EntireRow.Hidden = True
Rows("1:22").EntireRow.Hidden = False

End Select
End If

ActiveSheet.Activate
If Not Application.Intersect(Range("E30"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value


Case Is = "YES": Rows("34:81").EntireRow.Hidden = True
Rows("1:33").EntireRow.Hidden = False

Case Is = "NO": Rows("34:63").EntireRow.Hidden = True
Rows("1:33").EntireRow.Hidden = False
Rows("64:81").EntireRow.Hidden = False

End Select
End If
结束子

最佳答案

工作表更改:基于多个条件隐藏行

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range("E19"), Target) Is Nothing Then
Select Case UCase(CStr(Range("E19").Value))
Case "YES"
Rows("1:22").Hidden = False
Rows("23:81").Hidden = True
Case "NO"
Rows("1:22").Hidden = False
Rows("23:33").Hidden = False
Rows("34:81").EntireRow.Hidden = True
'Case Else
End Select
End If

'Yes
'IF E30 = 'Yes' AND E6 = 'VIC'
'Then Rows 1:33 are not hidden AND Rows 34:81 are hidden
'IF E30 ='Yes' AND E6 ='OTHER'
'Then Rows 1:33 are not hidden AND Rows 34:81 are hidden

'No
'IF E30 = 'No' AND E6 = 'VIC'
'Then Rows 1:45 are not hidden AND Rows 46:81 are hidden
'IF E30 = 'No' AND E6 = 'OTHER'
'Then Rows 1:33 and 64:81 are not hidden AND Rows 34:63 are hidden

If Not Intersect(Range("E6,E30"), Target) Is Nothing Then
Select Case UCase(CStr(Range("E30").Value))
Case "YES"
Select Case UCase(CStr(Range("E6").Value))
Case "VIC", "OTHER"
Rows("1:33").Hidden = False
Rows("34:81").Hidden = True
'Case Else
End Select
Case "NO"
Select Case UCase(CStr(Range("E6").Value))
Case "VIC"
Rows("1:45").Hidden = False
Rows("46:81").Hidden = True
Case "OTHER"
Rows("1:33").Hidden = False
Rows("34:63").Hidden = True
Rows("64:81").Hidden = False
'Case Else
End Select
'Case Else
End Select
End If

End Sub

关于Excel VBA基于多个条件隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72136706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com