2016-04-11 77 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聲明)。

相關問題