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

Excel VBA 反复删除左上角含lns字符串的固定区域代码运行无反应求助

代码错误原因

  • InStr 函数原生不支持*通配符匹配,你写的"*lns*"只会匹配单元格内容里本身包含星号加lns加星号的内容,自然找不到符合要求的单元格。
  • 正向遍历UsedRange删除单元格时,删除操作会触发后续单元格上移,会导致遍历过程跳过部分单元格,出现漏删的情况。
  • 没有做边界校验,如果匹配到的单元格太靠近工作表边缘,删除超出工作表范围的区域会触发报错。

修正后代码

Sub DeleteLnsRegion()
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long
    ' 获取当前工作表已使用区域的最大行、列
    lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    lastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column
    
    ' 倒序遍历行、列,避免删除导致的漏扫问题
    For i = lastRow To 1 Step -1
        For j = lastCol To 1 Step -1
            ' 判断单元格包含lns,且剩余行、列足够容纳要删除的3行19列区域
            If InStr(1, Cells(i, j).Value, "lns", vbTextCompare) > 0 _
            And i + 2 <= lastRow And j + 18 <= lastCol Then
                Range(Cells(i, j), Cells(i + 2, j + 18)).Delete Shift:=xlShiftUp
            End If
        Next j
    Next i
End Sub

补充说明

  • 代码默认不区分lns的大小写,如果需要严格匹配大小写,把vbTextCompare改为vbBinaryCompare即可。
  • 如果需要删除区域后单元格左移,把xlShiftUp改为xlShiftToLeft。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 22:27:02