2014-10-08 29 views
0

好了,所以我有一個非常簡單的功能:如果用戶隱藏某列,則返回一個值?

Public Function CELLHIDDEN(col As Variant) As Integer 
    Application.Volatile True 
    x = 1 
    If Range(col).ColumnWidth = 0 Then x = 0 

    CELLHIDDEN = x 
End Function 

,我可以把它在一個小區像這樣:

=CELLHIDDEN("P5") 

的問題是,它不會重新計算除非我按進入表格的其他地方。從我猜測的Application.Volitle使它對這樣的變化很敏感,但是我真正想要的是當它隱藏一列時它會做些什麼。

我基本上分組5列,我想有一些彈出的是提到,有隱藏的列時,它們就會消失......

回答

0

Application.Volatile讓您重新計算功能,只要在您的工作簿重新計算任何東西,多少如NOW(),OFFSET()INDIRECT(),它們被認爲是易失性函數,並重新計算,無論變化是否會影響其結果。

你在找什麼是觸發器爲您的功能。假設隱藏/顯示是在工作表上執行的,而不是通過VBA執行的,則必須至少選擇要隱藏的每行或每列中的一個單元格。由於在隱藏操作之後它們將不可見,所以用戶必須選擇另一個單元繼續工作。這將是Workbook_SheetSelectionChangeWorksheet_SelectionChange事件宏觸發工作簿,工作表或單元格計算事件的機會窗口。對於這個問題,事件宏甚至可以檢查和報告隱藏或不隱藏的列/行。

相關問題