2014-10-08 60 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事件宏触发工作簿,工作表或单元格计算事件的机会窗口。对于这个问题,事件宏甚至可以检查和报告隐藏或不隐藏的列/行。

相关问题