2017-10-10 83 views
0

HeJ小鼠,EXCEL VBA動態表名稱 - 不工作時式中的細胞

我已經創建了一個小VBA代碼動態地重命名錶。

它的工作完全只是手動鍵入單元格時。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("C9")) Is Nothing Then 
     ActiveSheet.Name = ActiveSheet.Range("C9") 

    End If 
End Sub 

但隨後一旦我將把公式級聯C9小區內2倍細胞的值就不會自動更新。 爲了使它工作,我需要輸入單元格,然後再次輸入ENTER,它才起作用。 我每次改變連接的2單元的值時,都必須進行相同的操作。

感謝您的幫助球員

回答

2

您需要捕獲不同的事件

Private Sub Worksheet_Calculate() 
    Application.EnableEvents = False 
     ActiveSheet.Name = ActiveSheet.Range("C9") 
    Application.EnableEvents = True 
End Sub 

注:

我們的情況下,名稱變更期間禁用活動工作表包含一個引用tab-name的公式。

+0

感謝加里!它完美的作品! –

+0

@MarienGébé你很受歡迎! –

0

這應該工作:

通過

ActiveSheet.Name = ActiveSheet.Range("C9").Value

+0

感謝@Max但如果沒有相交(目標,範圍(「C9」))是Nothing然後就是問題它不會改變任何東西...... –

+0

行。如果此單元格只能查找公式中的更改。離開它然後它工作。 – Max

0

這就是,如果有人還想在工作表更改事件執行此備選答案更換

ActiveSheet.Name = ActiveSheet.Range("C9")

Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False 

    Dim formulacell As Range 
    Set formulacell = Range("C9") 
    Set formulacell = Application.Union(formulacell, formulacell.Precedents) 

    If Not Intersect(Target, formulacell) Is Nothing Then 
     ActiveSheet.Name = ActiveSheet.Range("C9").Value 
    End If 

    Application.EnableEvents = True 
End Sub