You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA实现关闭UserForm后自动跳转至刚写入值的工作表

VBA用户窗体关闭后自动跳转最后操作工作表实现方案

步骤1:声明窗体级变量存储最后操作的工作表

在UserForm1代码模块的最顶部(所有Sub过程之外)添加如下代码,用来记录用户最后点击操作的工作表:

' 模块级变量,整个窗体代码范围内都可以调用
Dim lastUsedSheetName As String

步骤2:修改S1/S2/S3三个按钮的点击事件

每次点击按钮写入单元格值时,同步记录当前操作的工作表名称:

Private Sub S1_Click()
    Sheets(1).Cells(1, 1).Value = TextBox1.Value
    ' 记录本次操作的工作表名
    lastUsedSheetName = Sheets(1).Name
End Sub

Private Sub S2_Click()
    Sheets(2).Cells(1, 1).Value = TextBox1.Value
    lastUsedSheetName = Sheets(2).Name
End Sub

Private Sub S3_Click()
    Sheets(3).Cells(1, 1).Value = TextBox1.Value
    lastUsedSheetName = Sheets(3).Name
End Sub

注意:如果你的按钮实际绑定的过程名是原有参考代码的Sheet1_Click/Sheet2_Click/Sheet3_Click,只需要在原有过程内新增变量赋值的代码行即可,不需要修改过程名。

步骤3:修改关闭按钮的点击事件

关闭窗体时读取存储的工作表名,激活对应工作表即可:

Private Sub Zamknij_Click() 
    UserForm1.Hide 
    ' 加非空判断,避免用户未点击任何按钮直接关闭窗体时报错
    If lastUsedSheetName <> "" Then
        Worksheets(lastUsedSheetName).Activate
    End If
End Sub

可选优化

如果你的工作表名称后续可能会修改,也可以把变量改为存储工作表索引,避免表名修改后代码失效:

  1. 变量声明改为:Dim lastUsedSheetIndex As Integer
  2. 按钮事件赋值改为:lastUsedSheetIndex = 1(S1对应1、S2对应2、S3对应3)
  3. 关闭按钮激活改为:Worksheets(lastUsedSheetIndex).Activate

内容的提问来源于stack exchange,提问作者Homar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:54:09