我通过语句Sheets("Sheet1").Range("A6").CopyFromRecordset rs
填充了列A到列E.它从Access数据库中提取数据。
列F到L保存手动输入到每个记录的工作簿中的信息。
**问题**
如果添加了新记录,它在A列中显示正常。它也以正确的顺序出现,但是同一行中与先前记录相反的任何信息都没有移动,因此它不再准确。
例如,在Access数据库中添加新记录之前,记录ABC
出现在Excel的第16行中。当添加新记录时,例如AAA
,它现在出现在第16行,ABC
出现在第17行。第16行中第F到H列中的任何信息都没有向下移动一行,而且现在反对AAA
。
答案 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