调用目标后,Excel VBA – Sub未完成

我正在尝试制作一个工作表,根据页面上的不同select进行调整。 有3个单元格将下拉列表,将根据选定的值修改页面。 当我在Worksheet_SelectionChange中直接启动子程序时,它没有任何问题(因为它只有一个),但是正如我所需要的那样3我想根据您select的单元格启动子程序。 我现在的问题是select工作(用Showmsg完成testing),但是之后应该发生的一切都没有。

Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Count = 1 Then If Not Intersect(Target, Range("D25")) Is Nothing Then Call LineBlock_Change(Target) End If End If End Sub --------- Sub LineBlock_Change(ByVal Target As Range) 'D25 Select Case Target Case "Non Protected / Non Redundant" ' Affichage 1 Ligne Columns("J:O").Hidden = True Case Else ' Affichage 2 Ligne Columns("J:O").Hidden = False End Select End Sub 

问题是当我使用Worksheet_SelectionChange中Sub的相同代码(对可以select的单元格有限制)时,它确实有效,但在尝试与Sub进行午餐时却不行。 我personnaly不知道是否可以像这样的后续行动,或者如果我需要重新思考这样做的方式。

在此先感谢您的帮助。


更新:正如我注意到,我可能有一些问题,真正解释我不能做什么,我会尝试另一种方法。 我有这个代码:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Address <> "$D$25" Then Exit Sub Select Case Target Case "Non Protected / Non Redundant" ' Affichage 1 Ligne Columns("J:O").Hidden = True Case Else ' Affichage 2 Ligne Columns("J:O").Hidden = False End Select End Sub 

它正是我想要的,当D25有string:“不受保护/非冗余”它隐藏了列J:O。 现在我的问题是,D25不是我想要隐藏/取消隐藏列/行的唯一条件。 而这样我正在试图编写一个代码,将启动一个子取决于哪个单元格被选中,内部是什么。 虽然当我尝试以一种方式编写代码时,它会以一种子的方式工作,但是它不会以我想要的方式(隐藏列)作出反应。

 Sub LineBlock_Change(ByVal Target As Range) 'D25 Stop '<- see what happens Select Case Target Case "Non Protected / Non Redundant" ' Affichage 1 Ligne Columns("J:O").Hidden = True Case Else ' Affichage 2 Ligne Columns("J:O").Hidden = False End Select End Sub 

LineBlock中的问题如下所示:

  • Column应该是Columns()
  • Columns("J:O").EntireRow.Hidden = True隐藏整个工作区。 那很棒! 但是你可能需要删除EntireRow部分。

编辑:

在更新之后,阅读“D25不是我想要隐藏/取消隐藏列/行的唯一条件”,这是你应该做的:

 Select Case True Case Target = "Non Protected / Non Redundant" 'some action Case Range("A1") = "something else" 'some other action Case Else Columns("J:O").Hidden = False End Select