这是我第一次使用Macros。 我在B2中创建了一个带有“是”和“否”选项的下拉列表。
我使用了这段代码:
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
我在 Sheet1 中创建了一个新模块,并将其放在那里。我将excel保存为 Macro Enabled Tamplate ,但是当我更改下拉列表时没有任何反应。
感谢您的帮助!
答案 0 :(得分:3)
为自己做一个大忙,养成在你编写的VBA代码的每个模块顶部写Option 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
答案 1 :(得分:2)
If Range("B2") = "Yes" Then
和" No"类似。选项