EXCEL VBA动态表名称 - 不工作时式中的细胞
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单元的值时,都必须进行相同的操作。
感谢您的帮助球员
您需要捕获不同的事件:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
ActiveSheet.Name = ActiveSheet.Range("C9")
Application.EnableEvents = True
End Sub
注:
我们的情况下,名称变更期间禁用活动工作表包含一个引用tab-name的公式。
这应该工作:
通过
ActiveSheet.Name = ActiveSheet.Range("C9").Value
感谢@Max但如果没有相交(目标,范围(“C9”))是Nothing然后就是问题它不会改变任何东西...... –
行。如果此单元格只能查找公式中的更改。离开它然后它工作。 – Max
这就是,如果有人还想在工作表更改事件执行此备选答案更换
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
感谢加里!它完美的作品! –
@MarienGébé你很受欢迎! –