Excel VBA常用语句集锦

2010-11-22  籽藤 

  这段时间的工作都被一堆一堆的文档湮没了...

  CMMI涉及到的文档,额滴个神,跟一座山一样压得人喘不过气来.....  CMMI造假比真干要难得多啊~~我顿时对做假账的会计们肃然起敬,他们太不容易了,把明明不存在的事情说得很真的一样,还要拟制一堆的证据证明那是真的,这是多么高难度且有技术含量的一件事情!而我们现在呢,起码项目是实实在在经历过的,只是把开发过程小小地“美化”一下,就已经让大家死去活来了...

  好吧,我承认我改不了话痨本色。停止碎碎念,把这段时间写的VBA脚本整理如下:

  • 选择

选择单元格:Range("H5").Select               选择列:Columns("C:C").Select

选择Sheet:Sheets("Sheet1").Select      选择区域:Range("C1:C8").Select

  • 读取指定目录下的文件名列表

Dim filelist  As String   

MyExcelFileName = Dir("E:\temp\") '------指定文件目录

    Do While Len(MyExcelFileName) > 0

        If (Len(filelist) <> 0) Then
    filelist = filelist + "," + MyExcelFileName
        Else
    filelist = filelist + MyExcelFileName
        End If

    MyExcelFileName = Dir

    Loop
用msgbox语句查看filelist。若E:\temp下存在1.xls和2.xls两个文件,那么filelist的值为:1.xls,2.xls

    若要对目录中的文件进行批量操作,则

f = Split(filelist, ",")

For Each i In f()
    Workbooks.Open Filename:="E:\temp\" & i '自己修改路径

'----添加操作-----

'--------------------

    ActiveWorkbook.Save '保存修改
    ActiveWindow.Close '关闭文件
    Next

  • 修改Excel中所有Sheet页某个单元格的内容

For j = 1 To Sheets.Count
Sheets(j).Select
    Range("H3") = "myValue"
Next

  • 修改某些单元格的公式

    Range("K10").Formula = "=if(J10=0,0,sum(D10/J10))"

    Range("K10").AutoFill Destination:=Range("K10:K25"), Type:=xlFillDefault

上两行代码的作用是,为单元格K10设置公式"=if(J10=0,0,sum(D10/J10))",并将公式自动向下填充到K25。即,K11设置的公式是"=if(J11=0,0,sum(D11/J11))";......K25设置的公式是"=if(J25=0,0,sum(D25/J25))"

  • 文本替换

 Columns("C").Replace what:="oldText", Replacement:="newText"

  • 将“文本格式”的数字改为“数字格式”

Range("D10:H25").Select

 For Each rng In Selection
        '遍历当前选中区的所有单元格
        For Each cell In rng.Cells

            If (cell.PrefixCharacter = "'") Then
            cell.Value = "" & cell.Value
            End If

        Next
    Next

  • 字符串处理

比如,获得文件名列表:“XXXXX_20100304.xls”,“XXXXXXXXXXX_20100320.xls”,“XX_20100401.xls”……我需要将文件名中的时间,与文件内容里的时间进行统一。所以,我们需要一个字符串处理的方法,能自动获得文件名中的时间;再把它赋值给Excel文件的某个单元格。

Dim s, t

s = "地方很少看见饭后就开_20100304.xls"

t = Mid(s, 12, 8) '在[字符串]中[从第几个开始]取出[长度个字符串]

    yearNum = Left(t, 4)
    monthNum = Mid(t, 5, 2)
    dayNum = Right(t, 2)

    myTime = yearNum + "-" + monthNum + "-" & dayNum
    MsgBox myTime '输出的myTime为:2010-03-04

PS. 对于VBA的函数,我们根本不需要记忆。对于某些基本操作(选择、赋值一类的),我们可以录制宏,再通过Alt+F11进入代码编辑器,来了解VBA的实现。  

500°/5007 人阅读/0 条评论 发表评论

登录 后发表评论