dynamic重命名Excel表

从前面的问题来看,要根据单元格引用的变化dynamic地重命名工作表,可以使用以下命令:

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的名称会自动更新?

谢谢!

或者将此代码放在Sheet1模块上…

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

注意:这里的Sheet1是Sheet Code Name。 所以每当Sheet2上A1的值发生变化时,Sheet1将被重命名。

在“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