2010-06-02 7 views
0

Je remplis les données de l'accès ms à Excel via VBA. Mon db contient un certain nombre de détail de groupe que je veux séparer les membres de groupe pendant le temps de population le problème est qu'à la fin de chaque groupe je veux insérer 2 rangées dans la feuille d'Excel j'utilise le code mentionné ci-dessous mais je ne fonctionne pas est-ce possible?Insérer une ligne dans l'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 

premier i récupérer les données groupwise accès X est mon nombre de lignes K1 est la cellule 1 et K2 est cell2 je compare la cellule 1 avec la cellule 2 à boucle si les données ne sont pas
correspondance alors il est un autre groupe compte donc après cette cellule i veut insérer les 2 lignes

Répondre

1

Vous pouvez remonter façons:

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

Dans mon expérience, la fonction « Select » peut être peu fiable. Vous pouvez l'éviter en utilisant les éléments suivants:

.Rows(s).Insert Shift:=xlDown 

en supposant que je comprends bien que l « » est le numéro de ligne.

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