ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] VBA入门指南——献给在这里得到帮助但看不懂代码的朋友(已建电梯)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-2-3 11:36 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
虽然已经有点晕(一点不懂就不会晕) ,但随着以后的学习应该会好的吧?谢谢老师的教学。

TA的精华主题

TA的得分主题

发表于 2009-2-3 12:52 | 显示全部楼层
谢谢老师的教学,以前不懂的,看了你的贴子,开始慢慢理解了。

TA的精华主题

TA的得分主题

发表于 2009-2-3 20:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-3 20:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-3 23:10 | 显示全部楼层

【2009.2.3】代码起步——我的程序(续)

  如何才能让大家更容易地理解、掌握和能运用VBA代码呢?这是我这几天一直在思考的问题。看到这么多朋友在关心和支持这个帖子,越发感到责任重大~~我们在前面2课讲解了如何让VBA代码从EXCEL工作表中取到单元格的数据,今天我们要把取到的数据计算一下,并且写回指定的单元格中。
  实例文件如下: 例1.rar (10.99 KB, 下载次数: 4191)
  首先,为了不让每次点击单元格都弹出的对话框来烦我们,我们需要将相关的语句去掉。直接删除当然是一件容易的事,但如果想保留下来以备不时之需,那么这里就介绍一种方法给大家,大家也可以将这个方法运用在添加注释或者屏蔽调试程序过程中的测试代码等方面。其实说了这么多,方法很简单,就是在该条语句前加个西文半角方式下的单引号,即“'”。添加这个符号以后,你会发现,该语句已经变成绿色字体了,表示该语句被转换为注释部分,不再执行了。
  其次,为了实现计算数据的目的,我们需要添加一个按钮控件,还记得我们之前讲过的控件都在哪里吗?对,控件工具箱,如果没有这个工具栏,你可以通过【视图】菜单的【工具栏】项目的下拉列表来添加。添加按钮控件的方法是,点击控件工具箱上的【按钮】控件(如图: 1.jpg ),然后在需要添加按钮的单元格区域按住鼠标左键,拖放出一个指定大小的按钮,松开鼠标,按钮就出来了。现在的按钮是不是比较难看?我们可以通过设置几个属性来“美化”一下。如果看不到属性对话框,那么可以点击控件工具箱中的【属性】按钮(如图: 2.jpg )打开属性对话框。第一个修改的是“名称”属性,这个属性表示这个按钮控件在我们的代码里的唯一名称,我们今后在代码中如果需要引用到这个按钮,就需要通过这个名称来引用,这里修改为“CMD_pj”,这个名称的被“_”符号分为前后两个部分,前面大写的部分表示控件类型是按钮(CMD=Command简称),后面小写的部分表示该按钮的作用是评级。当然这个名称是由我们随便起的,只要有意义就可以了。第二个修改的是Autosize属性,这个属性有一个逻辑值,默认为False,这个属性表示当前控件的大小尺寸是否自动调节,根据什么调节呢?当然是根据按钮上显示的文字来条件,False表示不自动调节,True表示自动调节,这里我们设置为True(一会就能看到变化了)。第三个修改的是Caption属性,这个属性的作用是设置按钮上显示的文字内容,有的教材也把它叫做按钮的名称,我觉得会跟之前讲的“名称”属性搞混了,所以我叫它“按钮上显示的文字”。虽然冗长,但易于理解。这里我们设置为“评级”。好了,看看按钮,是否好看多了?这时你还可以用鼠标点住按钮拖动以调节下放置的位置。(放心,现在处于设计模式下,单击按钮是不会触发按钮的Click事件的。)
  下面,我们在L1单元格输入“等级”两个字,表示我们将根据前面K列的总分,来对每个学生进行评级,并将最终结果放在L列对应单元格中。那么按什么标准来评级呢?我们在这里先定义一下:每门课的分数都是0-100分,总分在765(含)-900(含)为“优秀”,675(含)-765(不含)为“良好”,540(含)-675(不含)为“及格”,0(含)-540(不含)为“不及格”。该标准也就是按平均分的范围来定的,平均分在0到60分(不含)为“不及格”,60分到75分(不含)为“及格”,75分到85分(不含)为“良好”,85分到100分为“优秀”。如果我们是手工完成评级任务,那么我们只要按照上面的标准,看看K列的总分在哪个范围,就在L列对应单元格输入相应的等级就可以了。但我们现在需要用VBA代码完成,通过点击“评级”按钮自动填写到L列所有单元格中,接下来该怎么做呢?其实我们只需要做1件事,即添加按钮中的代码,使之具备功能就可以了。那么就动手吧!我们双击按钮,进入VBA代码编辑窗口,我们看到已经有了一个过程,即之前我们添加的SelectionChange事件的代码,我们再看看现在光标所在区域,是不是在另一个过程中,这个过程名称叫做“Cmd_pj_Click”,大家看到代码编辑窗口顶端两个下拉列表框的内容了吗?正好是两个下拉框内容连起来,那么我们可以知道,前一部分即“Cmd_pj”,表示当前对象是按钮对象,后一部分“Click”,表示调用按钮对象的“Click”事件,即单击事件,只要鼠标单击该按钮,就会触发该事件并自动执行内部定义的代码。好了,接下来我们就来完成这里的代码吧!添加的代码及解释如下:
Private Sub Cmd_pj_Click()
'评级按钮单击事件代码
Dim i As Integer                                     '声明一个变量,名称为I,类型为整形,作用为循环控制变量
Dim tmp_Total As Single                              '声明一个变量,名称为tmp_Total,类型为单精度型,作用为保存总分
Sheet1.Range("K2").Select                            '选中K2单元格
For i = 2 To Sheet1.Range("K:K").End(xlDown).Row       '开始一个循环语句,循环条件是从第2行至K列最后一个有数值的行
    tmp_Total = Sheet1.Cells(i, 11).Value            '将某行L列单元格数值(总分)赋值给变量tmp_Total
    Select Case tmp_Total                            '开始一个分支选择判断语句
    Case 0 To 539.99                                 '条件为“大于等于0分且小于540分”的情况
        Sheet1.Cells(i, 12).Value = "不及格"         '该条件下设置为“不及格”
    Case 540 To 674.99                               '条件为“大于等于540分且小于675分”的情况
        Sheet1.Cells(i, 12).Value = "及格"           '该条件下设置为“及格”
    Case 675 To 764.99                               '条件为“大于等于675分且小于765分”的情况
        Sheet1.Cells(i, 12).Value = "良好"           '该条件下设置为“良好”
    Case 765 To 900                                  '条件为“大于等于765分且小于等于900分”的情况
        Sheet1.Cells(i, 12).Value = "优秀"           '该条件下设置为“优秀”
    Case Else                                        '除上述条件外的其他取值情况
        Sheet1.Cells(i, 12).Value = "错误"           '其他情况下设置为“错误”
    End Select                                       'Select分支选择判断结束语句
Next                                                 'For循环结束语句
End Sub
  好了,我们已经做了所有需要做的工作,现在保存一下然后关闭代码窗口,我们回到熟悉的EXCEL窗口,点下“评级”按钮试试,咦?怎么没反应?呵呵,还记得刚才我说过的吗?注意控件工具箱里的第一个按钮状态(如图: 3.jpg ),现在处于“设计”模式下,单击按钮是不会触发任何事件的,所以我们需要退出“设计”模式,方法是单击控件工具箱里的第一个按钮,使之恢复弹出的状态(区别于刚才按下的状态)。再点下按钮,试试,怎么样?结果出来了吧?别光顾着乐,好好理解和琢磨下代码吧!今天来不及详细讲解这些代码的作用了,明天将逐句讲解这段代码里用到各个知识点和技巧,敬请期待吧~~

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-2-4 09:47 | 显示全部楼层
注解这么清楚.更容易看懂代码了.

慢慢的都好学了.

TA的精华主题

TA的得分主题

发表于 2009-2-4 14:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-4 15:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好帖好帖,楼主辛苦了!!!!

TA的精华主题

TA的得分主题

发表于 2009-2-4 17:57 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-4 20:07 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 17:55 , Processed in 0.041128 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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