【发布时间】: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...真棒...