2017-10-13 81 views
0

我有一個與我的「簡介」工作表關聯的宏。它由單元格更改觸發,然後調用操作另一個工作表「TimeInLibraryData」的第二個宏。這很簡單:使用Excel 2016,當宏與工作表關聯時,VBA不會激活備用工作表

私人小組Worksheet_Change(BYVAL目標作爲範圍)

Sheets("TimeInLibraryData").Visible = True 
Sheets("TimeInLibraryData").Activate 

MsgBox "The name of the active sheet is " & ActiveSheet.Name 

Call CreateTimeLine.CreateTimeLine1(1) 

末次

公用Sub CreateTimeLine1(PickSingleLib長)

Sheets("TimeInLibraryData").Activate 

MsgBox "The name of the active sheet is " & ActiveSheet.Name 

末次

您可以看到我在輸出活動工作表名稱。問題是,在這兩個地方顯示,我看到ActiveSheet是「簡介」表時,它應該是「TimeInLibraryData」

該應用程序是在Excel 2010中編寫的,我剛更新到Excel 2016,問題是看到。

在Excel 2016中運行,如果我在正常運行時訪問CreateTimeLine1宏,它就會工作。在「簡介」工作表更改後調用宏時,我只會看到一個問題。

我在VBA 2016中創建了一個簡化的例子,發現它按預期工作。我還在Excel 2010中創建了這個簡單的示例,並在Excel 2016中運行了該示例,該示例同樣適用。

所以 - 我有一個非常令人困惑的局面綁在運行寫在Excel/VBA 2010未正確在Excel/VBA用最新的補丁程序的2016

回答

0

我用Excel 2016年宏集並且不能重現該行爲。您應該在Application.EnableEvents = FalseApplication.EnableEvents = True之間夾入您的電話Sheets("TimeInLibraryData").Activate,以確保沒有其他事件處理程序捕獲您的線路將觸發的Worksheet_Activate事件。

+0

有趣的 - 我已經在調用函數中設置了Application.EnableEvents,但是該設置沒有被傳遞給子。在子中添加它解決了這個問題。謝謝 – Coopermancm

相關問題