excel vba问题,我写好的下面的宏为什么一执行就卡住呢?
只写了一半一实验就不行了,简单描述下,我首先想删除第13列为TM的行,然后根据具体日期想删除第十三列为CA和MH的行,到底哪里的原因不能执行,请高手帮忙!Subcode(...
只写了一半一实验就不行了,简单描述下,我首先想删除第13列为TM的行,然后根据具体日期想删除第十三列为CA和MH的行,到底哪里的原因不能执行,请高手帮忙!
Sub code()
Dim i%, v%,a,
For i = 1 To 1000
If Cells(i, 13) = "TM" Then
Rows(i).Delete
i = i - 1
End If
Next
a=inputbox("输入前一天日期“,,0)
For v = 1 To 800
If Cells(v, 13) = "CA" OR CELLS(v,13)="MH" Then
Rows(v).Delete
End If
v = v - 1
Next
End Sub
请忽略a=inputbox("输入前一天日期“,,0)
我把这行删掉,同样也不能执行 展开
Sub code()
Dim i%, v%,a,
For i = 1 To 1000
If Cells(i, 13) = "TM" Then
Rows(i).Delete
i = i - 1
End If
Next
a=inputbox("输入前一天日期“,,0)
For v = 1 To 800
If Cells(v, 13) = "CA" OR CELLS(v,13)="MH" Then
Rows(v).Delete
End If
v = v - 1
Next
End Sub
请忽略a=inputbox("输入前一天日期“,,0)
我把这行删掉,同样也不能执行 展开
7个回答
展开全部
你定义的a没有用到
Sub code()
Dim i%, v%, a
For i = 1000 To 1 step -1
If Cells(i, 13) = "TM" Then
Rows(i).Delete
End If
Next
a = InputBox("输入前一天日期", , 0)
For v = 800 to 1 step -1
If Cells(v, 13) = "CA" Or Cells(v, 13) = "MH" Then
Rows(v).Delete
End If
Next
End Sub
Sub code()
Dim i%, v%, a
For i = 1000 To 1 step -1
If Cells(i, 13) = "TM" Then
Rows(i).Delete
End If
Next
a = InputBox("输入前一天日期", , 0)
For v = 800 to 1 step -1
If Cells(v, 13) = "CA" Or Cells(v, 13) = "MH" Then
Rows(v).Delete
End If
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果第一行就是你要删除的行呢?就会出错,i、v就会变成0,导致出错,改成从最大行开始往上执行吧
Sub code()
Dim i%, v%,a,
For i = 1000 To 1
If Cells(i, 13) = "TM" Then
Rows(i).Delete
End If
Next
a=inputbox("输入前一天日期“,,0)
For v = 800 To 1
If Cells(v, 13) = "CA" OR CELLS(v,13)="MH" Then
Rows(v).Delete
End If
Next
End Sub
Sub code()
Dim i%, v%,a,
For i = 1000 To 1
If Cells(i, 13) = "TM" Then
Rows(i).Delete
End If
Next
a=inputbox("输入前一天日期“,,0)
For v = 800 To 1
If Cells(v, 13) = "CA" OR CELLS(v,13)="MH" Then
Rows(v).Delete
End If
Next
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从下往上找,这样就不会造成删除行引起的行号变化
For i = 1 To 1000
If Cells(1001-i, 13) = "TM" Then
Rows(i).Delete
End If
Next
下面也这么改,i=i-1这个不要,容易造成死循环
另外一段类似
For i = 1 To 1000
If Cells(1001-i, 13) = "TM" Then
Rows(i).Delete
End If
Next
下面也这么改,i=i-1这个不要,容易造成死循环
另外一段类似
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下一段的v=v-1应该放到end if前面吧?
要不你这就是不论是否删除v行,v始终减1,每次都是在第一行执行,成了死循环。
另外你那个a输入了有啥用?没看出来……
要不你这就是不论是否删除v行,v始终减1,每次都是在第一行执行,成了死循环。
另外你那个a输入了有啥用?没看出来……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实我不知道你说的不行是什么意思?没有表述清楚!
另外我说一个我的习惯,我一般整行删除的话,是由最下面那行开始的,就是:
FOR i = 1000 TO To 1 Step -1
.....
next
这样比较不容易乱,我个人意见而已,
你“a=前一天日期”这个变量好像在后面的过程中都没有用到!
另外我说一个我的习惯,我一般整行删除的话,是由最下面那行开始的,就是:
FOR i = 1000 TO To 1 Step -1
.....
next
这样比较不容易乱,我个人意见而已,
你“a=前一天日期”这个变量好像在后面的过程中都没有用到!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询