我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。
如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了。
VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是:如何学习VBA_3.2.12.13:VBA中工作表函数的利用
【分享成果,随喜正能量】有勇知方,惟大义所在,却是奋不顾身。不管身处何种境地,心存大义的人,都能不惧危难奋勇向前,点亮别人的生活。只希望一定要注意安全!心善自然美丽,心真自然诚挚,心慈自然柔和,心净自然庄严;澹泊寡欲可以养神,宁静致远可以养志,怡情适性可以养和,观空自在可以养心。种下一个善念,收获一种良知;种下一种良知,收获一种道德;种下一种道德,收获一种习惯;种下一种习惯,收获一种性格;种下一种性格,收获一个人生。。
当VBA学习到这里,我们对VBA的理解应该有一定的高度了,整个VBA的知识点繁多,但大多是围绕对象、对象的属性、对象的方法、对象的事件来展开的。VBA是学习OFFICE的高级阶段,这也就是说,我们学习OFFICE需要提高时就要进军VBA了。
我们在利用EXCEL的时候,最为津津乐道的或许就是函数了,在很多的场合,我都给出了自己对函数的定义,这个定义可以适用于初高中的学习环境,也可以适合于语言学习的环境,是一个更加容易理解及应用的概念
传统的函数定义:一般的,在一个变化过程中,假设有两个变量x、y,如果对于任意一个x都有唯一确定的一个y和它对应,那么就称x是自变量,y是x的函数。
近代定义:设A,B是非空的数集,如果按照某种确定的对应关系f(),使对于集合A中的任意一个数x,在集合B中都有唯一确定的数和它对应,那么就称映射为从集合A到集合B的一个函数。
上述两个定义都在强调一对一的对应关系,这就是之前函数的思想精髓。在强调过程的同时,对对象的要求过于苛刻了。在现代意义上函数已经绝非之前的思想能约束的了。如:在计算机语言中,函数强调的是对于输入的值value,输出的值或者return的值具有唯一性,这种输入的值或者返回的值不再受到个数的限制。可能是1个也可能是多个。
我推出的函数概念:
如果对于唯一性输入值value,输出(或者return)的值也具有唯一性(这种输入或者输出的值没有个数的限制),那么具有这种变化关系的输入和输出关系,就称为输出是输入的函数。
这个概念希望大家能理解。在VBA中也是可以应用EXCEL函数的,这就是 Application.WorksheetFunction了,利用这个方法我们可以应用我们熟知的EXCEL函数了。
在《VBA代码解决方案》这套教程中,给大家介绍了一种利用工作表函数CountIf来判断是否录入了重复值的方案。这种方案虽然不是我推荐的,但对于利用EXCEL多年的朋友是乐于接受的,在这节的代码中,我给出了:
Private Sub Worksheet_Change(ByVal Target As Range) '51 利用VBA代码,限制重复值的录入
With Target
If .Column <> 1 Or .Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Range("A:A"), .Value) > 1 Then
.Select
MsgBox "不能输入重复的人员编号!", 64
Application.EnableEvents = False
.Value = ""
Application.EnableEvents = True
End If
End With
End Sub
这里需要注意几点:
1 代码的书写位置,代码是写在哪里的?为什么?
2 工作表函数的利用方法。
3 判断的触发条件;判断值的重复在什么情况下触发;如何设置触发
4 程序控制权的理解,代码中为什么要有程序控制权的处理?
5 工作表事件中值的传递,在工作表中输入的数据是如何传递给程序的。
如果大家学习到这节,一定要再问一下自己上述的5个问题是否可以解答。如果能够解答,那么说明自己的VBA水平是达到预期的,如果还有部分问题不能解答,就需要再努把力了。学习的过程是循序渐进的,要在每节的代码中学到些自己需要的知识点。
当你学到我的第三套教程《VBA数组与字典解决方案》时会有更好的排重方案。
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: