EXCEL VBA动态工作表名称(根据单元格值)-单元格中的公式不起作用
嘿 我创建了一个小的VBA代码来动态重命名工作表 当单元格只是手动输入时,它工作得很好EXCEL VBA动态工作表名称(根据单元格值)-单元格中的公式不起作用,excel,vba,excel-2013,Excel,Vba,Excel 2013,嘿 我创建了一个小的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单元中加入一个连接两个单元值的公式
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单元中加入一个连接两个单元值的公式,它就不会自动更新。
要使它工作,我需要进入单元格,然后再次键入enter,它就工作了。
每次我更改连接的2个单元格的on值时,我都必须执行相同的操作
感谢各位的帮助您需要捕捉不同的事件:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
ActiveSheet.Name = ActiveSheet.Range("C9")
Application.EnableEvents = True
End Sub
注意:
如果工作表包含引用选项卡名称的公式,我们将在名称更改期间禁用事件。您需要捕获不同的事件:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
ActiveSheet.Name = ActiveSheet.Range("C9")
Application.EnableEvents = True
End Sub
注意:
如果工作表包含引用选项卡名称的公式,我们将在名称更改期间禁用事件。这应该可以:
替换
ActiveSheet.Name=ActiveSheet.Range(“C9”)
借
ActiveSheet.Name=ActiveSheet.Range(“C9”).Value
这应该可以:
替换
ActiveSheet.Name=ActiveSheet.Range(“C9”)
借
ActiveSheet.Name=ActiveSheet.Range(“C9”).Value
如果仍有人希望在工作表更改事件中执行此操作,则这是另一个答案
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
如果仍有人希望在工作表更改事件中执行此操作,则这是另一个答案
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
如果直线不相交(目标,范围(“C9”)),则不存在任何问题。如果此单元格不可用,则仅查找公式中的更改。如果直线不相交(目标,范围(“C9”)),那就是问题所在。如果此单元格不可用,则仅查找公式中的更改。离开它,它就会工作。