【问题标题】:Excel: Dynamically change sheet tag based on cell value in another sheetExcel:根据另一个工作表中的单元格值动态更改工作表标签
【发布时间】:2016-08-17 17:28:44
【问题描述】:

我正在尝试根据另一个工作表(“标题”工作表)中的单元格值动态更改工作表标记名称。当我从同一张工作表进行更新时,动态更改效果很好,并且在更改单元格值后按 Enter 时会发生更改。但是,当参考单元格位于另一张工作表中时,在按 Enter 后,工作表标签没有更改,直到我主动访问要更新的工作表并单击工作表。有没有办法解决这个问题?我有大约 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

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

任何建议将不胜感激!

【问题讨论】:

  • 因为您的代码适用于特定的工作表更改。因此,如果您在 Sheet1 中有此代码,则只有当您在 sheet1 中进行更改时,此代码才会起作用。要么在所有工作表后面添加此代码,要么只使用工作簿级别工作表更改事件Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range),您可以在工作簿对象中访问它。
  • 我的解决方案对您的情况有效吗?
  • @cyboashu,为迟到的回复道歉(走了)。实际上,我已经设法通过结合这两个答复来解决这个问题,所以感谢你们的意见。 workbook_sheet 更改是我最终要寻找的工作簿级别工作表更改事件,因此如果您将其作为答案,我将接受它。如果几天内没有更新,我会接受当前的答案。再次感谢您的帮助!
  • @RCaetano,请看上面的评论。感谢您的意见!
  • @dl00065...真棒...

标签: vba excel


【解决方案1】:

根据要求

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

【讨论】:

    【解决方案2】:

    所以您有大约 20 张左右的工作表,因此在进行更改时单击每张工作表会很费力。 为什么不循环遍历所有工作表以刷新更改? :)

    类似:

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

    HTH ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多