开头先要说明一下,本人非码农,非办公室文职,所以代码和excel应用水平极其低下,有错误的话各位轻喷。。。 只要输入想搜索的城市名以及月份,点击按钮,即可直接显示出相对应的数字,是不是感觉很方便?不仅用起来方便,得益于VBA本身的函数,代码量很少,30行不到就可以完成以上操作,如果换成在excel里的操作,就三种,“ctrl+→”、“ctrl+↓”和“ctrl+f”。嗯,就这三个,简单吧~~~下面让我们看看怎么只用这三个操作完成这个定位的。 首先我们要先进入excel设计模式,来添加所需控件,点击开发工具——设计模式——插入,即可选择所需插入的控件,在控件上悬停可看到该控件名称。 我在这里用了四个控件,分别是两个文本框,一个按钮以及一个标签。文本框用来输入需要搜索的字条。按钮是主程序所在,点击后即开始搜索。标签是显示结果,当然也可以直接在excel的某个单元格中显示。 双击任意控件即可进入代码界面,由于程序运行是基于按钮被点击,所以双击按钮控件进入代码界面,这样就可以直接对按钮点击这个动作进行编程。用过VB6的同学应该很熟悉这个界面。这个界面中有三个窗口,除了代码窗口外,在这个程序中我修改了CommandButton1的caption属性,这个属性其实对应的就是在按钮上显示什么字,在这里我改成了搜索。 完成了以上操作,接下来就可以写程序了,程序其实和烧菜的菜谱差不多,变量就是各种食材调味料,代码就是烧菜的步骤。 Dim row_count_sht1 As Long 这三行Dim开头的代码是声明变量。这是什么意思呢?我们可以把long看作是一个大药箱,这里面就只能放药,而不能放其他东西,第三行的string看作是个饭盒,那这里只能放饭菜,差不多就是这个意思。dim后面跟着的那些就是变量的名称,第一行的意思就是有一个叫row_count_sht1的大药箱,变量的名称可以自己定,除了一些特殊字符之外其他都可以用。具体long和string的含义各位可以自己去百度,这个还是很容易理解的。 定义好了需要用的变量,接下来就可以写程序了,也就是怎么烧菜。 clm_max_sht1 =Worksheets("Sheet1").Range("A1").End(xlToRight).Address clm_max_sht1 =Mid(clm_max_sht1, 2, 1) row_count_sht1 =Worksheets("Sheet1").Range("A1").End(xlDown).Row Set item_info =Worksheets("Sheet1").Range("A1:A" &row_count_sht1 & "").Find(What:=TextBox1.Value,After:=Range("A1"), LookIn:=xlFormulas, _ LookAt:=xlWhole,SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False,SearchFormat:=False) If item_info IsNothing Then MsgBox "未找到" &TextBox1.Value Else city_str = item_info.Address city_str = Right(city_str, Len(city_str) -3) Setitem_info = Worksheets("Sheet1").Range("A1:" &clm_max_sht1 & "1").Find(What:=TextBox2.Value,After:=Range("A1"), LookIn:=xlFormulas, _ LookAt:=xlWhole,SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False,MatchByte:=False, SearchFormat:=False) If item_info Is Nothing Then MsgBox "未找到" &TextBox2.Value Else mon_adr = item_info.Address mon_adr = Mid(mon_adr, 2, 1) Label4.Caption =Worksheets("Sheet1").Range("" & mon_adr &"" & city_str & "").Value Worksheets("Sheet1").Range(""& mon_adr & "" & city_str & "").CopyRange("J6") End If End If 以上就是这个程序所有的内容了,是不是很简单很方便?不需要去学习很多的excel使用方法,只要有最基本的excel操作思路,就可以完成繁杂的操作,这样就不用再去记那些函数了,果然懒才是人类进步的原动力啊~~~ 不过话说回来,VBA也并不是什么情况都适合,像上面那个程序虽然简单,但也需要大概十几分钟来完成,如果仅仅是偶尔用到某个功能,而且不会花费太多时间的情况下我建议还是手动做做算了,毕竟花十几甚至几十分钟写一个手动几分钟就能完成的东西,怎么看都不符合懒这个标准的说~~~ |
|