2016-04-11 49 views
2

我是VBA编码新手,迄今为止已成功地在工作簿中创建了一个范围表,该表隐藏/取消隐藏基于工作簿用户对“是/否”问题的回复。根据另一个工作表中的单元格条件自动隐藏列

我需要进一步优化工作簿,以便在“范围”选项卡中提供的“是/否”响应会导致其他工作表中的列隐藏。使用这个网站,我用这个代码在以前的线程(显然修正了我自己的细胞裁判)的标签之一:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$B$6" Then 
     Select Case Target.Value 
     Case Is = "Cast" 
      Columns("f").EntireColumn.Hidden = False 
      Columns("d").EntireColumn.Hidden = True 
      Columns("e").EntireColumn.Hidden = True 
     Case Is = "LDF" 
      Columns("f").EntireColumn.Hidden = True 
      Columns("d").EntireColumn.Hidden = False 
      Columns("e").EntireColumn.Hidden = False 
     Case Is = "Select ROV Type" 
      Columns("f").EntireColumn.Hidden = False 
      Columns("d").EntireColumn.Hidden = False 
      Columns("e").EntireColumn.Hidden = False 
     End Select 

在B6,我有一个公式(=名称)从作用域拉通标签。虽然上面的代码有效,但只有在我手动输入单元格以重新获取数据时才会这样做......任何提示: - 通过链接到宏中的原始范围选项卡,绕过单元格引用;和 - 自动化列隐藏?

回答

0

最简单的事情,似乎编辑您这样的代码,在需要的地方:

Sheet2.Columns("f").EntireColumn.Hidden = False 

Sheet2的是表,其中列应该被隐藏。

+1

这很好,谢谢。我只是将这一行代码添加到原始范围选项卡中。辉煌。 – BGr27

0

如果我正确地理解你的需求像如下

在“的ThisWorkbook”的代码窗格中放置以下代码:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

    Application.EnableEvents = False 
    With Sheets("scoping sheet") '<== here you set which sheet you want to monitor 
     If .Range("B6") <> .Range("A1") Then '<== check if the "formula" cell changed its previous value, stored in the "echo" cell ("A1") 

      Select Case .Range("B6").Value 
       Case Is = "Cast" 
        .Columns("f").EntireColumn.Hidden = False 
        .Columns("d").EntireColumn.Hidden = True 
        .Columns("e").EntireColumn.Hidden = True 
       Case Is = "LDF" 
        .Columns("f").EntireColumn.Hidden = True 
        .Columns("d").EntireColumn.Hidden = False 
        .Columns("e").EntireColumn.Hidden = False 
       Case Is = "Select ROV Type" 
        .Columns("f").EntireColumn.Hidden = False 
        .Columns("d").EntireColumn.Hidden = False 
        .Columns("e").EntireColumn.Hidden = False 
      End Select 

      .Range("a1") = .Range("b6") '<== update the "echo" cell value for subsequent checking 

     End If 
    End With 
    Application.EnableEvents = True 

End Sub 

正如你看到的,你必须选择一个“回声”的小区的“范围“表单,它将用于存储其”B6“单元格的先前值。

在我的代码中,我选择了单元格“A1”作为“范围”工作表中的“回声”单元格,但是您可以选择任何需要的地址,只要它是一个“空闲”单元格(即:您的代码和用户赢了'用它写入)并相应地更改代码(即地址If .Range("B6") <> .Range("A1") Then声明)。

相关问题