如何修改VBA实现从Sheet1指定单元格取值动态更改工作表名称
VBA代码调整方案
你只需要修改取值范围的引用声明部分,给Range("A1")显式指定父工作表为Sheet1即可,具体调整如下:
调整步骤
- 原代码中
Set Target = Range("A1")的Range默认指代当前事件绑定的工作表单元格,改成Set Target = Worksheets("Sheet1").Range("A1")即可固定从主控表Sheet1的A1单元格取值。 - 如果你希望在任意工作表选中单元格时都能触发改名逻辑,可以把这段代码从对应工作表的模块移动到
ThisWorkbook模块,并把事件声明改为Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range),适配全局触发场景。
修改后完整代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 显式指定从Sheet1的A1单元格取值 Set Target = Worksheets("Sheet1").Range("A1") If Target = "" Then Exit Sub ' 这里如果是固定要改某个工作表的名字而非当前活动表,也可以把ActiveSheet替换为Worksheets("待改名表名") Application.ActiveSheet.Name = VBA.Left(Target, 31) Exit Sub End Sub
额外说明
如果你的需求是固定修改某一个指定工作表的名称,而非当前选中的活动工作表,可以把Application.ActiveSheet也替换为Worksheets("你要改的工作表的原名"),避免误改其他工作表的名称。
内容的提问来源于stack exchange,提问作者user16446331
相关产品推荐
相关产品推荐

