Excel 基于另一个工作表中的单元格值隐藏一个工作表中的行

Excel 基于另一个工作表中的单元格值隐藏一个工作表中的行,excel,vba,Excel,Vba,我知道这个问题已经被问到了,我很抱歉添加到混合,但我已经通过许多不同的帖子试图找到解决方案,我的代码只是没有做任何事情。我在工作表选项卡第49单元中有一个下拉框,有3个选项:混合、在线和住宅。我希望当一个人在我的备忘录选项卡中选择混合行或在线行37-63时被隐藏。当一个人选择住宅时,第37-63行可见。我以为这很容易,但不管我做什么,都没有发生什么。我在特定备忘录选项卡代码中有此项,而不是在模块中。任何帮助都将不胜感激。下面是我写的代码。谢谢 Private Sub Worksheet_Chan

我知道这个问题已经被问到了,我很抱歉添加到混合,但我已经通过许多不同的帖子试图找到解决方案,我的代码只是没有做任何事情。我在工作表选项卡第49单元中有一个下拉框,有3个选项:混合、在线和住宅。我希望当一个人在我的备忘录选项卡中选择混合行或在线行37-63时被隐藏。当一个人选择住宅时,第37-63行可见。我以为这很容易,但不管我做什么,都没有发生什么。我在特定备忘录选项卡代码中有此项,而不是在模块中。任何帮助都将不胜感激。下面是我写的代码。谢谢

Private Sub Worksheet_Change(ByVal Target As Range)
   For a = 37 To 63
      If Worksheets("Worksheet").Cell(C49).Value <> "Residential" Then
         Worksheets("Memo").Rows(a).Hidden = True
      ElseIf Worksheets("Worksheet").Cell(C49).Value = "Residential" Then
             Worksheets("Memo").Rows(a).Hidden = False
      End If
    End Sub

各种评论的结果是,我认为您的代码可以简化为

Private Sub Worksheet_Change(ByVal Target As Range)

If intersect(Target,range("C49")) is nothing Then Exit Sub

Worksheets("Memo").Rows("37:63").Hidden = (Range("C49").Value <> "Residential")

End Sub

编辑:根据@p更新ᴇʜ的评论。

令人惊讶的是,您的研究没有显示语法错误-应该是49。同时,将代码限制为对该单元格的更改,否则在任何单元格更改时都会触发。可以缩短为worksheetsmoom.Rowsa.Hidden=worksheetsmook.rangeC49.Value residentials。如果不需要循环,请一次完成所有操作。@Pᴇʜ-抱歉,不要跟随,目标和RangeC49肯定都在同一张纸上,即带有事件代码的那张纸上?如果代码被触发,它怎么可能不是活动工作表呢?不管怎样,我错了。RangeC49并不像我所想的那样指向ActiveSheet,如果它在sheets范围内,那么它只在写入模块时才指向ActiveSheet。显然,默认情况下,它指的是工作表的范围Me否则,可能会发生另一个工作表处于活动状态,并且该事件由VBA操作触发,该操作使用该事件更新工作表中的值我删除了我的评论