VBA常用技巧1

VBA常用技巧1

在项目测试阶段,经常会要使用vba做些小工具,方便测试数据的导入导出。
下面是一些编写程序时使用的小技巧:
1. 用循环往sheet里写入多行数据
    With Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Value = 要写入的值
        .Resize(, 3).Borders.LineStyle = xlContinuous
    End With
第一句是取第一列的行数(Excel2003是65536行),从下往上直到有输入的那行,再取其下一行,便得到了第一个未输入行的单元格。
另外一种方法:
    With ThisWorkbook.Sheets(1)
        r = .Range("A1").CurrentRegion.Rows.Count + 1
        .Cells(r, 1).Value = x
        .Cells(r, 2).Value = y
        .Cells(r, 3).Value = z
    End With

2. 第一列已有多行输入,现在要在后面相应的几列中写入数据
    Set LArea = Range("A1").CurrentRegion
    Application.ScreenUpdating = False
    For i = 2 to LArea.Rows.Count
        With Workbooks.Open(LArea.Cells(i, 1).Value)
            LArea.Cells(i, 2).Value = xxx
            LArea.Cells(i, 3).Value = yyy
            .Close SaveChanges:= False
        End With
    Next i
    Application.ScreenUpdating = True
第一句取得第一列所有输入的行范围;
假定从第二行开始写入数据;
假定第一列里放的是文件名,With用Workbooks打开每个文件,然后往相应的第二列和第三列里写入数据,最后关闭打开的文件(不保存)。

3. 往Workbook里追加新的sheet
    Worksheets.Add(After:=Sheets(Sheets.Count).Name = "表名")
        .Range("A1").Value = Worksheets(1).Rows("1:3").Value

4. 用ADO读取外部文件里的数据
    Set oConn = CreateObject("ADODB.CONNECTION")
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source=" & strExportDataFolder & ";" & _
                            "Extended Properties=""text;HDR=No;FMT=TabDelimited"""
    Set oRS = CreateObject("ADODB.RECORDSET")
    oRS.Open "Select * From " & strFileName, oConn, 3, 1, 1
    .....读入数据处理
    oRS.Close
    oConn.Close
使用这种方法读取如csv这样的文本文件,速度很快。但是,需要注意的是读入的数据可能会改变原来的格式。
比如,原来的格式是+00000000.001,读进来的数据可能会变成1。

你可能感兴趣的:(VBA常用技巧1)