Вставить строку в Excel - PullRequest
       45

Вставить строку в Excel

0 голосов
/ 02 июня 2010

Я заполняю данные из ms доступ к Excel через VBA. Мой БД содержит ряд деталей группы, которые я хочу разделить между членами группы во время заполнения. Проблема в том, что в конце каждой группы я хочу вставить 2 строки в таблицу 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

сначала я получаю данные по группам из доступа Х мой счетчик строк K1 - это ячейка 1, а K2 - это ячейка2. Я сравниваю ячейку 1 с ячейкой 2, используя цикл, если данные не
соответствует, то это считается другой группой, поэтому после этой ячейки я хочу вставить 2 строки

Ответы [ 3 ]

1 голос
/ 02 июня 2010

Вы можете работать в обратном направлении:

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 голосов
/ 30 октября 2017
  Range("a" & s & "").Select
Selection.Insert Shift:=xlDown
0 голосов
/ 04 ноября 2015

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

.Rows(s).Insert Shift:=xlDown

при условии, что я правильно понимаю, что 's' - номер строки.

...