动态重命名Excel工作表

时间:2017-07-15 04:41:57

标签: excel vba excel-vba

从上一个问题开始,要根据单元格引用更改动态重命名工作表,请使用以下命令:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, False) = "C3" Then ActiveSheet.name = 
ActiveSheet.Range("C3")
End Sub

但是如果单元格(“C3”)位于工作表1中但是本身引用另一个工作表上的单元格,那么这不起作用 - 假设C3在“工作表2”中引用“A1”。

如何更改代码,以便在工作表2中编辑A1时,工作表1的名称会自动更新?

谢谢!

2 个答案:

答案 0 :(得分:2)

在“Sheet2”工作表模块中的Worksheet_Change事件中添加以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

' only run the code if the cell being modified is in cell "A1"
If Not Intersect(Range("A1"), Target) Is Nothing Then
    Worksheets("Sheet1").Name = Target.Value
End If

End Sub

答案 1 :(得分:0)

或者将此代码放在Sheet1 Module ...

Private Sub Worksheet_Calculate()
On Error Resume Next
Sheet1.Name = Range("C3").Value
End Sub

注意:此处的Sheet1是图纸代码名称。 因此,每次在Sheet2上更改A1的值时,将重命名Sheet1。