2010-06-02 4 views
0

Я заполняю данные из мс доступ к Excel через VBA. Мой db содержит ряд подробностей группы. Я хочу разделить членов группы во время популяции, проблема заключается в том, что в конце каждой группы я хочу вставить две строки в листе excel, я использую приведенный ниже код, но я не работает?Вставить строку в excel

Dim varConnection 
Dim varSQL 
Dim cal, cal1, x 


    varConnection = "ODBC; DSN=MS Access Database;DBQ=table.accdb; Driver={Driver do Microsoft Access (*.accdb)}" 


    varSQL = "SELECT leftman.Productname,leftman.Description,leftman.SULM,leftman.MTR,leftman.meter1 FROM leftman INNER JOIN Product ON leftman.gid = Product.Productname ORDER BY Product.ID, leftman.ID" 
    With ActiveSheet.QueryTables.Add(Connection:=varConnection, Destination:=ActiveSheet.Range("B4")) 
      .CommandText = varSQL 
      .Name = "Query-39008" 
      .Refresh BackgroundQuery:=False 

    End With 
    x = Range("J5", Range("J5").End(xlDown)).Rows.Count 

    k1 = 5 
    k2 = 6 
    For i = 0 To x 
    s = k1 + i 
    s1 = k2 + i 

    If Range("J" & s & "").Value = Range("J" & s1 & "").Value Then 
    msgbox "same group" 

    Else 

    Range("J" & s & "").Select 
    ActiveCell.Offset(1).EntireRow.Insert 
    ActiveCell.Offset(1).EntireRow.Insert 
    k1 = 5 + 2 
    k2 = 6 + 2 

    End If 
    Next i 

первого я извлечение данных в GroupWise от доступа Х представляет собой рассчитывать мой ряд К1 клетка 1 и К2 CELL2 я сравнение ячейки 1 с ячейкой 2 через цикл, если данные не
матча то рассмотрит еще одну группы, так после этой ячейки я хочу вставить в 2 строке

ответ

1

Вы можете работать зады:

x = Range("J5", Range("J5").End(xlDown)).Rows.Count 

For i = x To 5 Step -1 
    s = i 
    s1 = i - 1 

    If Range("a" & s & "").Value = Range("a" & s1 & "").Value Then 
     MsgBox "same group" 

    Else 

     Range("a" & s & "").Select 
     ActiveCell.EntireRow.Insert 
     ActiveCell.EntireRow.Insert 

    End If 
Next i 
0

в моем опыте функции «Выбрать» может быть ненадежным. Вы можете избежать этого, используя следующее:

.Rows(s).Insert Shift:=xlDown 

Предполагая, что правильно понимаю, что это номер строки.

0
Range("a" & s & "").Select 
Selection.Insert Shift:=xlDown