ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ggsmart

菜鸟谈VBA最最基础入门《原创》

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-2-11 15:29 | 显示全部楼层

回复 1219楼 Wer-mf 的帖子

本帖已被收录到知识树中,索引项:开发帮助和教程
if语句是一个判断分支语句,根据条件判断,选择执行不同的语句块。IF—Then构造用于二元判断时使用,也就是只有两种情况可供选择时使用。如果满足条件则执行动作1,否则执行动作2。

if—then—elseif语句构造是当可供选择的情况多于两种时使用,当然,当可供选择的情况多于三种时也是可以使用多个if-then语句来实现,但是这样的代码并不是最有效率的代码。它的语句形式是:
If  逻辑表达式1 Then  
          语句块1
ElseIf  逻辑表达式2  Then
          语句块2
ElseIf  逻辑表达式3Then
           语句块3
            …
Else
           语句块n
Eed If

这个语句执行的流程应该是这样的:
程序开始,先判断逻辑表达式1的值是否为真,如果为真,则执行语句块1,执行完语句块1之后,执行end if语句后面的代码。如逻辑表达式的值为假,则继续判断逻辑表达式2的值是否为真,如果为真则执行语句块2,执行完语句块2之后,执行end if语句后面的代码。而最后的else子句(红色部分)是一个可选子句,也就是在程序编写中可以不写。如果写上这个子句,则:当上面所有的逻辑表达式都为假时,执行子句里面的子语句块,再执行End if语句后面的代码。如果没有这个可选子句,当上面所有的逻辑表达式的值都为假时,则不执行任何语句,直接执行end if语句后面的语句。

下面是这个语句的流程图:
202400910.jpg

Wer-mf朋友列举的选择西瓜的例子可以表述为:如果西瓜熟了,就摘走,否则不摘走
这只是一个在两种情况种进行选择的问题,所以我觉得,对于挑选西瓜的问题,用IF-Then语句即可。
如果要使用if-then-else if语句,应该有三种情况供选择。比如还是摘西瓜的例子,问题变为:如果西瓜熟了,摘进箩筐,如果西瓜熟烂了,则摘丢进路边的水沟,如果西瓜没熟,则不摘。
像这种问题,就可以用if-then-else语句了,写成程序应该是:
=========================
if 西瓜熟了 then
     摘进箩筐
else if 西瓜熟烂了 then
     摘丢进路边的水沟
else if西瓜没熟  then
     不摘
end if
当然,因为除了熟了的和熟烂了的,就只剩没有熟的,所以,最后一种情况,我们可以使用else这个可选子句来代替
=========================
因此,Wer-mf朋友说的“不管前面的条件满足与否,语句块N都会被执行”是不正确的。而不管是if-then语句还是if-then-else if语句,一次都只能选择一个西瓜。所谓的从100个西瓜里面挑选熟西瓜的例子,我们需要重复选择100次,因为我们没有100双手同时去抱着地里的100个西瓜在那里东敲西敲,去判断它是否已经熟透。
所以,如果地里的西瓜有100个,要从这100个西瓜里摘熟熟西瓜到箩筐里,我们要用“循环+判断”两种语句来解决,写成程序应该是:
==================================
for 西瓜 in 地里的100个西瓜集合
     if 西瓜熟了  then
           把西瓜摘进箩筐
     end if
next 西瓜
==================================
上面只是一个写程序的思路,并不是真正的VBA代码。我们在地里的100个西瓜里进行循环判断,选择,直到完成100次选择,将所有的西瓜全部挑选完。

记住一点:if-then语句是用于可供选择的情况只有两种的时候,而当可供选择的情况多于两种时,可以使用if-then-else if语句构造。但是当选择的情况过多,使用过多的else if会不便于程序的阅读和理解。当可供选择的情况过多时,我们一般不使用if语句,而使用select case语句。所以,select case语句是在所需要判断和选择的项目过多时代替if语句的一种更好的方法,它的工作原理和if-then-else if语句基本相同,但却更便于阅读和理解。

所以,理解了if-then-else if语句后,再来看select case语句,就简单多了。因为select case是替代if语句的一种更好的语句,所以同if语句一样,它一次也只能选择一个西瓜。所以,要想挑100个西瓜,这个程序可以编写为:
=========================
for 西瓜 in 地里的100个西瓜集合     
    select case 西瓜熟的情况
          case is 熟了
                摘进箩筐
          case  熟烂了
                摘丢进路边的水沟
          case 没熟
                 不摘
     end select
next 西瓜
========================
不知道上面的解释是不是清楚?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-2-11 15:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
另外:为了观察程序的程序流程,当一个程序编写完成之后,可以在代码窗口里,将光标定位到程序中间,按F8键逐句执行程序,进行观察!

TA的精华主题

TA的得分主题

发表于 2010-2-11 17:11 | 显示全部楼层
楼主,学习vba 有视频吗?看视频学的更快呀!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-2-11 18:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 1269楼 exingqi 的帖子

可以参加EH培训中心的培训班,这是报名贴
http://t.excelhome.net/thread-974-1-1.html

TA的精华主题

TA的得分主题

发表于 2010-2-11 18:30 | 显示全部楼层

回复 3楼 ggsmart 的帖子

讲的不错,比的例子好,看来老师不仅是程序好,更好在程序外!

TA的精华主题

TA的得分主题

发表于 2010-2-11 22:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 5楼 ggsmart 的帖子

想看看自己写的代码能不能用,但好像我的EXCELI 不能VBA,

TA的精华主题

TA的得分主题

发表于 2010-2-11 23:07 | 显示全部楼层

回复 1267楼 ggsmart 的帖子

今天来看看,哦,老师真是越讲越好了!

TA的精华主题

TA的得分主题

发表于 2010-2-12 00:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我在上个世纪学过编程,整整10年未学了,这些道理都懂,就是不知如何面向对象,把程序加入工作表中。

TA的精华主题

TA的得分主题

发表于 2010-2-12 00:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

太牛了

辛苦了,我这个新人在这里学习了很多,真诚的说句谢谢啦!

TA的精华主题

TA的得分主题

发表于 2010-2-12 00:50 | 显示全部楼层
我好像还入不了门,还是有老师在身边一问就好了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 21:10 , Processed in 0.043641 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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