嘿嘿,
我创建了一个小的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单元内的两个单元格值时,它就不会自动更新它。要使它工作,我需要输入单元格,然后再次输入enter,它就能工作了。每次在连接的2单元格中更改一个值时,我都必须执行相同的操作。
谢谢你们的帮助
发布于 2017-10-10 12:01:00
您需要捕获一个不同的事件
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
ActiveSheet.Name = ActiveSheet.Range("C9")
Application.EnableEvents = True
End Sub注:
如果工作表包含引用选项卡名称的公式,则在更改名称期间禁用事件。
发布于 2017-10-10 12:11:30
这应该是可行的:
替换
ActiveSheet.Name = ActiveSheet.Range("C9")
通过
ActiveSheet.Name = ActiveSheet.Range("C9").Value
发布于 2017-10-10 12:39:59
如果有人仍然希望在工作表更改事件中执行此操作,则这是另一个答案。
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 Subhttps://stackoverflow.com/questions/46666069
复制相似问题