Excel:根据另一个工作表中的单元格值动态更改工作表标签

时间:2016-08-10 12:53:22

标签: excel vba excel-vba

我正在尝试根据另一个工作表中的单元格值“标题”工作表动态更改工作表标记名称。当我从同一张纸进行更新时,动态更改效果很好,并且在更改单元格值后按下输入时更改。但是当参考单元格位于另一个工作表中时,在按下输入后,对于工作表标记没有任何更改,直到我主动访问要更新的工作表并单击工作表。无论如何都要绕过这个?我有大约20张左右的纸张,因此在进行更改时单击每张纸是很费力的。这是我的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Set Target = Worksheet("Title").Range("A1")
    If Target = "" Then Exit Sub
    On Error GoTo Badname
    ActiveSheet.Name = Left(Target, 31)
    Exit Sub
Badname:
    MsgBox "Please revise the entry in A1." & Chr(13) _
    & "It appears to contain one or more " & Chr(13) _
    & "illegal characters." & Chr(13)
    Range("A1").Activate
End Sub

我的另一个选择是添加更新按钮来执行更改,但如果可能的话我想避免这种情况。

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:0)

所以你有大约20张左右的纸张,因此在进行更改时点击每张纸是很费力的。为什么不循环遍历所有纸张来刷新更改? :)

类似的东西:

Dim sht As Worksheet
Application.ScreenUpdating = False
For Each sht In Worksheets
  sht.Activate
Next
Application.ScreenUpdating = True

HTH;)

答案 1 :(得分:0)

根据要求

因为您的代码的范围是特定工作表更改的范围。因此,如果您在Sheet1中有此代码,则只有在sheet1中进行更改时,此代码才会生效。在所有工作表后面添加此代码,或者只使用工作簿级别工作表更改事件Private Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Target As Range),您可以在工作簿对象中访问它。