2015-10-21 52 views
1

我希望工作表Administrator像一個按鈕,但我不想去實際工作表。使工作表像一個按鈕

如果點擊Administrator,它應該打開一個用戶窗體並保持活動狀態。

enter image description here

+0

好的。你有嘗試過什麼嗎?你能告訴我們嗎? – BruceWayne

回答

2

您可以創建一個公共變量CurrentSheet,它初始化爲ActiveSheet在Workbook_Open事件,然後在工作簿中的SheetActivate事件或者更新的CurrentSheet值或切換回之前的當前工作表,並顯示用戶形成。喜歡的東西(在Workbook碼片):

Public CurrentSheet As Worksheet 

Private Sub Workbook_Open() 
    Set CurrentSheet = ActiveSheet 
End Sub 

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    If Sh.Name = "Administrator" Then 
     CurrentSheet.Activate 
     UserForm1.Show 
    Else 
     Set CurrentSheet = Sh 
    End If 
End Sub 

的編輯:爲了安全起見,你也可以添加以下代碼。如果事件導致您的項目在事件後重置,則會添加一層保護。在原始代碼中,當我激活管理員之前故意重置項目時,我能夠產生崩潰。

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
    Set CurrentSheet = Sh 
End Sub 

這可能使代碼Workbook_Open多餘的,但我個人會保持它,因爲我不喜歡有未初始化的全局變量的想法,即使他們將被初始化之前我使用它們。另外 - 如果工作簿在 Administrator中打開(可能是某種錯誤情況),這將保證CurrentSheet有一個值。