自动更改工作表名称

时间:2018-01-10 09:28:00

标签: excel vba excel-vba

以下代码添加/删除工作表并插入所有工作表名称的列表,同时使其成为超链接:

https://stackoverflow.com/a/48159499/9102830

以下代码根据多个单元名称更改工作表名称:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = "C13" Then
    Sh.Name = Sh.Range("B33").Value + "_" + Sh.Range("C13").Value + "_" + Sh.Range("C22").Value + "_N01"
End If
End Sub

问题是:

  1. 而不是更改单元格输入何时更改,这可以自动完成吗?
  2. 是否可以成为" Sub add_sheet"的一部分。码?就像,如果我添加一个工作表,它应该根据单元格命名,并且由于它被复制并且单元格相同,显然会采用名称,在这种情况下名称应为" N02&#34 ;而不是" N01" (而不是Excel的默认"(2)")。
  3. 最后,当/如果更改了单元格,以便工作表名称不等于之前的工作表名称,它是否会自动返回到" N01"?
  4. 提前致谢!

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。一种方法是将Worksheet_ActivateWorksheet_Calculate结合使用,然后输入一个公共变量。

首次打开工作表时,您将自动设置变量,变量也会根据每次更改进行设置。

Option Explicit

Public myVar As Variant

Private Sub Worksheet_Activate()

    'Set the public variable
    myVar = Range("B33").Value

End Sub

Private Sub Worksheet_Calculate()

    If myVar <> Range("B33").Value Then
        sh.Name = ...
        myVar = Range("B33")
    End If

End Sub

您也可以在使用Workbook_Open打开工作簿时设置变量。真的只是取决于你的特殊需求。