Excel 根据下拉选择显示/隐藏行
这是我第一次使用宏。 我在B2中创建了一个下拉列表,带有“是”和“否”选项Excel 根据下拉选择显示/隐藏行,excel,vba,Excel,Vba,这是我第一次使用宏。 我在B2中创建了一个下拉列表,带有“是”和“否”选项 如果用户选择“是”,则第10行显示/第11行隐藏 如果用户选择“否”,则第11行显示/第10行隐藏 我使用了以下代码: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then If Range("B2") = Yes Then ActiveSheet.Rows("10:10").EntireRow.
- 如果用户选择“是”,则第10行显示/第11行隐藏
- 如果用户选择“否”,则第11行显示/第10行隐藏
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
If Range("B2") = Yes Then
ActiveSheet.Rows("10:10").EntireRow.Hidden = False
ActiveSheet.Rows("11:11").EntireRow.Hidden = True
ElseIf Range("B2") = No Then
ActiveSheet.Rows("10:10").EntireRow.Hidden = True
ActiveSheet.Rows("11:11").EntireRow.Hidden = False
End If
End If
End Sub
我在表1中创建了一个新模块,并将其放在那里。我将excel保存为启用宏的Tamplate,但是更改下拉列表时不会发生任何事情
谢谢你的帮助
If Range("B2") = "Yes" Then
同样,对于“否”选项,请帮自己一个大忙,养成在所编写的每个VBA代码模块的顶部编写
选项Explicit
的习惯
我已经添加了注释,并解释了您需要的修改
'this requires you to dimension all variables
'when you used '= yes' VBA thought you were saying
'the same as, = aVariable
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
If Range("B2").Value = "Yes" Then
'You can reference the row directly on the same sheet
'and do not need ActiveSheet
Rows("10:10").EntireRow.Hidden = False
Rows("11:11").EntireRow.Hidden = True
ElseIf Range("B2").Value = "No" Then
Rows("10:10").EntireRow.Hidden = True
Rows("11:11").EntireRow.Hidden = False
End If
End If
End Sub
还要注意,这只是使用“是”-使用“是”或“是”会导致问题。如果您希望在将来避免这些情况,可以按如下方式使用
UCase
方法:
If UCase(Range("B2").Value) = "YES" Then
谢谢,我刚想出来:)。乔西,有没有办法隐藏一行给它指定变量名?我注意到,如果我有一个宏脚本插入一个新行,那么
行(“10:10”)
不再是正确的行-因为所有内容都已下移。是的,您可以在第10行命名一个单元格,然后使用范围(“范围名称”).EntireRow.Hidden=False
作为InstanceHanks!我想我差不多明白了。现在,我得到一个运行时错误1004<代码>对象“\u工作表”的“范围”方法失败。下面是我使用的代码:分配名称的代码应该指定行所属的工作表——我假设它与更改事件代码所在的工作表相同