更新每条记录的结果

时间:2014-12-03 15:19:46

标签: excel vba excel-vba adodb

我有一个excel表,其中有两列number1和number2。对于每次迭代,我需要从单元格中取数字1和数字2并添加它,我需要在第三列中更新添加结果说& #34;结果"。我正在尝试使用OLE DB方法实现此目的,但同样的结果是在所有单元格中更新。请找到下面的代码。

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Sub TestMacro()
Sheets("Sheet1").Range("C2:D20").ClearContents
DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes;Option=3;"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RecordSet")
select_query = "SELECT * FROM [Sheet1$]"
cn.Open sconnect
With rs
    .ActiveConnection = cn
    .Source = select_query
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .CursorLocation = adUseServer
    .Open
End With
Do While Not rs.EOF


  num1 = rs.Fields(0).Value
  num2 = rs.Fields(1).Value
  rs.Fields(2).Value = num1 + num2
  rs.MoveNext

Loop
End Sub

1 个答案:

答案 0 :(得分:0)

如果你只是在寻找一个计算选项,那么:Range.Calculate就是你所需要的......但是这样做的方法要简单得多(假设你正在做col A + col B = col C?):

Dim LastRow As Long, CurRow As Long

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

For CurRow = 2 to LastRow '(assumes col header in row 1)
    Cells(CurRow, 3).Formula = "=A" & CurRow & "+B" & CurRow
Next CurRow