蔡諝的窝

博客园 首页 新随笔 联系 订阅 管理

出于提高效率的原因,希望excel能够不需要人为干预的完成一些操作,学习excel宏的编写与调试:

 第一列输入公式,第二类输出计算结果:(如果自动获取文件的行数,待补充)

Sub Calc()
a = [a1].Value
[b1].Value = Evaluate(a)
a = [a2].Value
[b2].Value = Evaluate(a)
a = [a3].Value
[b3].Value = Evaluate(a)

End Sub

 

改进:自动识别行数

Sub Calc()
    Dim i As Long, lastRow As Long
    lastRow = GetLastRow(Worksheets("Sheet1"), 1)
    For i = 1 To lastRow
        a = Cells(i, 1).Value
        Cells(i, 2).Value = Evaluate(a)
    Next i
End Sub

Function GetLastRow(ByVal TheSheet As Worksheet, ByVal col As Variant) As Integer
    Dim findrg As Range, ret As Range
    
    Set findrg = TheSheet.Columns(col)
    Set ret = findrg.Find(what:="*", searchdirection:=xlPrevious)
    If Not ret Is Nothing Then
        GetLastRow = ret.Row
    Else
        GetLastRow = 0

    End If
End Function

 

其他:

1.如果想要宏生效,需要设置下:选项->信任中心->信任中心设置->宏设置->启用所有宏;

2.如果想要在每个excel打开时,你的宏都可以用,需要在编写好宏后,将宏保存在%programfiles%\Microsoft Office\Office12\XLSTART路径下,保存格式Excel加载宏,如Calc.xlam

3.如果想要更高的效率,可以设置快捷键(待补充)

4.为了美观,可以用点按钮来触发宏(待补充)

5.调试环境(待补充)

6.宏名字在调用时,不区分大小写(待核实)

7.宏列表(快捷键"Alt+F8")

8.Alt+F11

 

参考:

(待研究)http://www.cnblogs.com/dxy1982/archive/2011/08/31/2159231.html

http://www.cnblogs.com/wdpp/archive/2012/02/13/2387078.html

http://www.cnblogs.com/kenyang/archive/2012/05/16/2503846.html

posted on 2013-11-18 21:15  蔡諝  阅读(446)  评论(0编辑  收藏  举报