使用CopyFromRecordset rs VBA时出现Excel动态静态数据问题

时间:2014-06-03 01:16:00

标签: excel-vba vba excel

我通过语句Sheets("Sheet1").Range("A6").CopyFromRecordset rs填充了列A到列E.它从Access数据库中提取数据。

列F到L保存手动输入到每个记录的工作簿中的信息。

**问题**

如果添加了新记录,它在A列中显示正常。它也以正确的顺序出现,但是同一行中与先前记录相反的任何信息都没有移动,因此它不再准确。

例如,在Access数据库中添加新记录之前,记录ABC出现在Excel的第16行中。当添加新记录时,例如AAA,它现在出现在第16行,ABC出现在第17行。第16行中第F到H列中的任何信息都没有向下移动一行,而且现在反对AAA

1 个答案:

答案 0 :(得分:1)

未测试:

Dim f as range, id, sht as worksheet

Set sht = Sheets("Sheet1")

do while not rs.eof

    id =  rs.Fields("idField").Value  'unique id for this record
    'already listed ?
    Set f = sht.columns(1).find(what:=id, lookin:=xlValues, lookat:=xlWhole)

    if f is nothing then 'not listed: add to sheet
       set f = sht.cells(rows.count,1).End(xlUp).offset(1,0)
       f.Value = id
    end if

    'fill in/update rest of values
    With f.entirerow
        .cells(2).value = rs.Fields("field2").Value
        .cells(3).value = rs.Fields("field3").Value
        'etc
    end with

    rs.movenext
loop