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

Excel VBA中如何用活动工作表动态引用替代工作表名称(如Sheet16)

修改后的VBA代码
Sub Macro1()
    Dim wsOriginal As Worksheet
    ' 保存最初的活动工作表引用,避免新建sheet后ActiveSheet指向变化
    Set wsOriginal = ActiveSheet
    
    ' 复制原活动表内容到新工作表
    wsOriginal.Cells.Copy
    Sheets.Add After:=wsOriginal
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    ' 给原活动表添加自动筛选
    wsOriginal.UsedRange.AutoFilter
    
    ' 在原活动表上设置筛选排序规则并应用
    wsOriginal.AutoFilter.Sort.SortFields.Clear
    wsOriginal.AutoFilter.Sort.SortFields.Add2 Key:= _
        wsOriginal.Range("M1:M12"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
        :=xlSortNormal
    With wsOriginal.AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
关键修改说明
  • 新增变量wsOriginal固定最初的活动工作表:新建工作表后ActiveSheet会自动切换到新表,用变量可以确保后续操作始终指向你一开始选中的工作表。
  • 替换所有ActiveWorkbook.Worksheets("Sheet16")为wsOriginal:彻底把固定表引用改成活动表引用。
  • 限定单元格区域为原活动表:把Range("M1:M12")改为wsOriginal.Range("M1:M12"),避免因当前活动表变化导致引用错误区域。
  • 移除冗余的Select和Selection:直接通过工作表对象操作,提升代码运行效率和稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:15:43