【发布时间】:2021-11-01 00:06:30
【问题描述】:
在第二个语句之后让多个 If 语句工作时遇到问题。我有 2500 行数据问题集,它们与 217 项下拉列表相关联。我要编码的是,适用的问题将根据下拉列表的选定操作填充。每个操作适用的问题从 3 到 12 不等,不适用于选择的问题应自动隐藏行。我尝试了多种代码变体,使用 ElseIf、If、组合 If 和 ElseIf、组合 If 和 Or_(这是最新的),如下所示。有人可以就此提出建议吗?我不知道还能尝试什么,我需要在代码中添加额外的 213 个变量.....谢谢
Sub Hide_Rows()
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TrigerCell As Range
Set Triggercell = Range("$J$14")
If Not Application.Intersect(Triggercell, Target) Is Nothing Then
If Triggercell.Value = "Electrician, farm based business" Then
Rows("19:2500").Hidden = False
Rows("26:2500").Hidden = True
Or_
If Triggercell.Value = "Plumbing and heating contractors, farm based business" Then
Rows("19:2500").Hidden = False
Rows("19:25", "47:2500").Hidden = True
Or_
If Triggercell.Value = "Plumbing contractors (plumber), farm based business" Then
Rows("19:2500").Hidden = False
Rows("19:46", "55:2500").Hidden = True
Or_
If Triggercell.Value = "Assembly and installation of agricultural equipment in farm outbuildings, for others, farm based business" Then
Rows("19:2500").Hidden = False
Rows("19:55", "61:2500").Hidden = True
End If
End If
End Sub
End Sub
End Sub
【问题讨论】:
-
您是否只是在每个
If块之后缺少End If语句?显示的代码有什么错误? -
什么是
Or_?这不是我熟悉的语言。您可能要考虑为此使用Select Case,我认为它最适合您正在做的事情。 -
另外:这是独立的 VB,还是 Excel 中的 VBA? (无论哪种方式,我的建议都成立。)
-
“不编译”和“不工作”是两个不同的东西。 “不工作”意味着代码确实编译并正在运行。您的代码未编译。
-
我建议在任何模块中使用
Option Explicit On作为第一行;这将使拼写错误的变量成为错误,而不是默默地创建新的东西。
标签: excel vba if-statement