如何通过VBA基于单元格值切换至对应名称的工作表
实现指定单元格值变化时自动切换对应工作表的VBA宏
实现步骤
- 打开包含指定触发单元格的工作表,右键点击工作表标签,选择「查看代码」
- 在弹出的VBA编辑器窗口中,粘贴以下代码(注意修改代码里的指定单元格地址,比如把
Range("A1")改成你实际使用的单元格) - 保存文件为**启用宏的工作簿(.xlsm)**格式,否则宏无法运行
VBA代码示例
Private Sub Worksheet_Change(ByVal Target As Range) ' 指定触发切换的单元格,这里改成你实际需要的单元格地址 Dim triggerCell As Range Set triggerCell = Me.Range("A1") ' 判断是否是指定单元格发生变化 If Not Intersect(Target, triggerCell) Is Nothing Then Dim targetSheetName As String targetSheetName = Trim(triggerCell.Value) ' 避免空值或无效工作表名导致报错 If targetSheetName <> "" Then On Error Resume Next ThisWorkbook.Sheets(targetSheetName).Activate On Error GoTo 0 ' 可选:如果找不到对应工作表,弹出提示 If Err.Number <> 0 Then MsgBox "找不到名为 '" & targetSheetName & "' 的工作表", vbExclamation End If End If End If End Sub
代码说明
Worksheet_Change是工作表专属的事件过程,只有当前工作表的单元格内容发生改变时才会触发Intersect(Target, triggerCell)用来判断变化的单元格是否是我们指定的触发单元格Trim(targetSheetName)用来去除单元格内容的前后空格,避免因为空格导致匹配失败On Error Resume Next和On Error GoTo 0用来处理找不到对应工作表的情况,防止宏报错中断
内容的提问来源于stack exchange,提问作者FERNANDO SORIANO COLADO
相关产品推荐
相关产品推荐

