2015-11-04 71 views
1

某些用戶隱藏了列/行,並且在保存工作簿之前忘記取消隱藏它們。我想趕上那與如何在取消隱藏行或列時觸發

Sub ReInvisible() 
    ThisWorkbook.Worksheets(1).UsedRange.EntireRow.Hidden = False 
    ThisWorkbook.Worksheets(1).UsedRange.EntireColumn.Hidden = False 
End Sub 

上保存事件與全部取消隱藏列/行這工作得很好,但我想告訴所有的隱藏的列/行現在是可見的用戶。現在我正在尋找一種方法來觸發取消隱藏列/行,因此只要至少有一列或一行變爲可見,我想要觸發一個消息框。

VB.NET我會嘗試寫我自己的event,但在VBA我不知道我怎麼能做一個解決方法。有人有想法嗎?

+0

你的意思是你想提高,當用戶取消隱藏行/列的情況下,或當您發佈的代碼實際上不隱藏什麼? – Rory

+0

當代碼取消隱藏某些內容時。 – ruedi

+1

您也可以在VBA中創建自定義事件,查看有關事件的CPearson文章:http://www.cpearson.com/excel/Events.aspx – R3uK

回答

2

像這樣的東西應該這樣做:

Sub ReInvisible() 
    Dim lVisColCount   As Long 
    Dim lVisRowCount   As Long 
    With ThisWorkbook.Worksheets(1).UsedRange 
     lVisColCount = .Rows(1).SpecialCells(xlCellTypeVisible).Count 
     lVisRowCount = .Columns(1).SpecialCells(xlCellTypeVisible).Count 
     .EntireRow.Hidden = False 
     .EntireColumn.Hidden = False 
     If .Rows(1).SpecialCells(xlCellTypeVisible).Count <> lVisColCount Then MsgBox "Columns unhidden" 
     If .Columns(1).SpecialCells(xlCellTypeVisible).Count <> lVisRowCount Then MsgBox "Rows unhidden" 
    End With 
End Sub 
+0

感謝您的回答。這段代碼是否在你的機器上運行?我創建了一個新的WB並隱藏了一列,但在lVisColCount = .Rows(1).SpecialCells(xlCellTypeVisible).Count中出現溢出錯誤。你知道這是爲什麼嗎? – ruedi

+0

你有沒有把它的任何數據? – Rory

+0

就是這樣。非常感謝! – ruedi