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

如何修改VBA代码生成仅START PROJECTS与END PROJECTS间的工作表名称列表

提取指定区间内的工作表名称

以下是修改后的VBA代码,仅会将位于“START PROJECTS”和“END PROJECTS”之间的工作表名称写入DEFINITIONS工作表的P列:

Sub GetListOfTargetSheets()
    Dim startSheet As Worksheet
    Dim endSheet As Worksheet
    Dim w As Worksheet
    Dim i As Integer
    Dim startIdx As Integer, endIdx As Integer
    
    ' 初始化写入行号
    i = 2
    
    ' 清理目标列(原代码清理W列但写入P列,保持逻辑一致,如需调整可修改Range参数)
    Sheets("DEFINITIONS").Range("W:W").Clear
    
    On Error Resume Next
    ' 获取指定的起始和结束工作表对象
    Set startSheet = ThisWorkbook.Worksheets("START PROJECTS")
    Set endSheet = ThisWorkbook.Worksheets("END PROJECTS")
    On Error GoTo 0
    
    ' 检查是否找到边界工作表,避免后续报错
    If startSheet Is Nothing Or endSheet Is Nothing Then
        MsgBox "未找到指定的起始或结束工作表,请确认名称拼写正确"
        Exit Sub
    End If
    
    ' 获取工作表索引,确保起始索引小于结束索引
    startIdx = startSheet.Index
    endIdx = endSheet.Index
    If startIdx > endIdx Then
        ' 交换索引值,兼容起始表在结束表之后的异常情况
        Dim tempIdx As Integer
        tempIdx = startIdx
        startIdx = endIdx
        endIdx = tempIdx
    End If
    
    ' 遍历工作表,仅写入区间内的表名
    For Each w In ThisWorkbook.Worksheets
        ' 仅写入两个边界表之间的工作表名称(不包含边界表本身)
        If w.Index > startIdx And w.Index < endIdx Then
            Sheets("DEFINITIONS").Cells(i, 16) = w.Name
            i = i + 1
        End If
    Next w
End Sub

关键修改说明:

  • 边界定位:通过Worksheet.Index获取两个边界工作表的位置索引,确保区间判断准确
  • 异常兼容:加入边界工作表不存在的判断,同时处理起始表在结束表之后的情况,避免逻辑出错
  • 区间筛选:仅将索引介于两个边界表之间的工作表名称写入目标列(若需要包含边界表本身,可将判断条件改为w.Index >= startIdx And w.Index <= endIdx)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:06:27