Excel精英培训网

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

[已解决]讨教if语句的用法

[复制链接]
发表于 2013-12-2 06:24 | 显示全部楼层 |阅读模式
    我学习vba时间不长,对if语句的使用理解的不透,使用起来老出错。恳请老师指教。一个表的a列为品名;b列为性质;c列为数量,我的问题是:第一步,判断在sheet1的a列中查找和sheet2的a2单元格的字符串相同的单元格,如果有则,查出此单元格的行号。第二步,判断该行的b列的性质,如果性质是“正”则,sheet2的b2单元格的值,就等于sheet1表中相对应的c列单元格的值;如果性质是“负”则,sheet2的b2单元格的值,就等于sheet1表中相对应的c列单元格的负值。
    请老师更正一下我写的代码,并指出我的错误在哪里,谢谢! if语句.rar (12.52 KB, 下载次数: 4)
发表于 2013-12-2 07:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yyyydddd8888 于 2013-12-2 07:15 编辑

你的if语句是对的,只是 cells(),和range()都必须加上工作表名 。改成这样的对了。
cells(),和range()都必须加上工作表名,VBA才能判断用哪一个工作表中的range或cells相比较。
如果不加工作表名,excel就默认当前活动工作表中的range或cells的数据。
if判断.zip (9.65 KB, 下载次数: 0)
回复

使用道具 举报

发表于 2013-12-2 07:40 | 显示全部楼层
本帖最后由 yyyydddd8888 于 2013-12-2 07:42 编辑

如果要操作两个或两个以上的工作表,就必须给range和cells加上工作表名。如果是操作两个或两个以上的工作簿,就还得再加上工作簿名,excel才知道你要从哪一个工作簿的哪一个工作表中取数据。
如果要精简代码,可以加上with 语句。比如你这段代码可以加上with,改成这样:
if判断.zip (9.68 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2013-12-2 08:51 | 显示全部楼层
只要将Cells("k, 2")改成Cells(k, 2)
如果在sheet1激活状态下运行你的宏没有问题。
当前工作表不用加工作表名。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 17:01 , Processed in 0.342310 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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