Office中国论坛/Access中国论坛

标题: [求助]一段代码,怎么试都不对,大大帮忙看看 [打印本页]

作者: cyrussgh    时间: 2007-3-13 08:41
标题: [求助]一段代码,怎么试都不对,大大帮忙看看
我在EXCEL里面做了一张表,想得到如下效果,F2栏为OK,即保留,F3栏NO,即删除,所以写下了这此代码

sub macro1()

for i = 1 to 100

if cells(i, 1).value = no then rows(i).delete

next

end sub

但是怎么都不对啊,那位大大帮手看看怎么回事,我刚学VB,什么都不懂


作者: 方漠    时间: 2007-3-13 17:04
sub macro1()

for i = 1 to 100

if cells(i, 1).value = no then rows(i).delete :i=i-1

next

end sub
作者: cola    时间: 2007-3-13 19:58
sub macro1()

for i = 100 to 1 step -1

if cells(i, 1).value = no then rows(i).delete

next

end sub
作者: cyrussgh    时间: 2007-3-13 22:31
以上2位大大的代码都不对啊,还是删不掉,可能是我理解错误,现附上表,请大大帮忙看看

sheet1中会输入数据,然后执行此代码,凡是OK的都不在sheet2中显示,写了NO的都在sheet2中出现,请问怎么才能做到?[attach]23515[/attach]


[此贴子已经被作者于2007-3-13 14:33:50编辑过]


作者: z2117s    时间: 2007-3-14 17:18
ok或no是situation的值,应该是cells(i,6) 而不是cells(i,1)啊
作者: cyrussgh    时间: 2007-3-15 00:26
我改了值为cells(i,6),但是还是不行啊,为什么呢。大大能否帮我改改这张表让我看看?

我改成

for i = 1 to 10

if cells(i, 6).Value = ok then rows(i).delete: i = i - 1

next

end sub

这样写了以后,发现执行了代码后就一直在循环检查,不按停止键都停不下来。
作者: z2117s    时间: 2007-3-15 23:32
刚学这样犯错不怪你,可是以后要自己确保没有低级错误哦.

For i = 1 To 100
If Cells(i, 6).Value = "ok" Then  '"ok"才是数值,ok是逻辑值,表示该值为空时执行,用双引号!
Rows(i).Delete
End If    '你没有,这是语法错误!
Next

你运行后之所以一直循环,是因为在你的程式中Cells(i, 6).Value = ok这个条件在值为空的时候始终是满足的,所以就一直在删除;

[此贴子已经被作者于2007-3-15 16:00:18编辑过]


作者: cyrussgh    时间: 2007-3-16 00:02
多谢z2117s指点,已经可以了,但是又有了一个新的问题,大大再帮个忙

这个代码写完了后,又出1个问题,就是没有循环,怎么写循环进去?现在是执行1次代码才削除1条,如果我的数据有100条,其中有90条要这样删除,那不要点90下执行代码?。。。。。
作者: z2117s    时间: 2007-3-20 01:09
什么叫没有循环?

for ...next不就是循环语句吗?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3