Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 955|回复: 7

[已解决]求大佬帮忙给看看代码哪里有问题?正确代码是什么?

[复制链接]
发表于 2022-9-7 18:04 | 显示全部楼层 |阅读模式
我想实现在B列找出编号带“CP”(也就是成品缩写)的单元格,然后删除所在行,在标粗区域报警“无效的过程调用或参数”,请问正确的代码应该是什么?

Sub 查找并删除行()

Dim r
x = Cells(Rows.Count, 2).End(3).Row
    For r = 1 To x - 1
        If Cells(r, 2) Like "*CP*" Then

            Rows("r,r").Delete Shift:=xlShiftUp
        End If
    Next

End Sub




最佳答案
2022-9-7 19:48
除了楼上所说的问题,还有一处问题
Rows("r,r").Delete Shift:=xlShiftUp
改成 Rows(r).Delete Shift:=xlShiftUp
变量加上双引号不成了文本了
发表于 2022-9-7 18:56 | 显示全部楼层
For r = 1 To x - 1 改成
For r =  x - 1 To 1 step -1

评分

参与人数 1学分 +1 收起 理由
朝夕寻心 + 1 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-9-7 19:45 | 显示全部楼层
风林火山 发表于 2022-9-7 18:56
For r = 1 To x - 1 改成
For r =  x - 1 To 1 step -1

试过了,还是报警,跟之前一样

回复

使用道具 举报

发表于 2022-9-7 19:48 | 显示全部楼层    本楼为最佳答案   
除了楼上所说的问题,还有一处问题
Rows("r,r").Delete Shift:=xlShiftUp
改成 Rows(r).Delete Shift:=xlShiftUp
变量加上双引号不成了文本了

评分

参与人数 1学分 +2 收起 理由
朝夕寻心 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-9-7 20:12 | 显示全部楼层
哥儿- 发表于 2022-9-7 19:48
除了楼上所说的问题,还有一处问题
Rows("r,r").Delete Shift:=xlShiftUp
改成 Rows(r).Delete Shift:=xl ...

谢谢大佬,已经通了,楼上说的那种方式不用改也能执行的,亲测
回复

使用道具 举报

发表于 2022-9-7 20:17 | 显示全部楼层
朝夕寻心 发表于 2022-9-7 20:12
谢谢大佬,已经通了,楼上说的那种方式不用改也能执行的,亲测

那你的数据可能没有连续的CP
上一行:CP
下一行:CP
这种情况下单元格上移了,会出现漏删的情况。
回复

使用道具 举报

 楼主| 发表于 2022-9-7 20:31 | 显示全部楼层
哥儿- 发表于 2022-9-7 20:17
那你的数据可能没有连续的CP
上一行:CP
下一行:CP

明白了,谢谢我是个纯小白
回复

使用道具 举报

 楼主| 发表于 2022-9-7 20:34 | 显示全部楼层
风林火山 发表于 2022-9-7 18:56
For r = 1 To x - 1 改成
For r =  x - 1 To 1 step -1

谢谢大佬,学到了,一开始执行不通,原来是犯了低级错误,变量不能加引号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 02:55 , Processed in 0.325691 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表