Pourquoi ma copie ne fonctionne-t-elle que sur la première boucle?

Mon code exécute les lignes de formatage sur la première boucle seulement après l'importation, mais ne les exécute pas après. Tout le reste fonctionne. Je l'ai frotté plusieurs fois avec rien. Des idées? Si quelqu'un a besoin de plus de coupures de code, je peux les ajouter. Je n'ai aucun problème avec d'autres sections.

Sub Main()
'this code imports one csv file at a time, analyzes it, determines individual run types and copies based on the type
Dim FName As Variant, R As Long, DirLoc As String, i As Integer
R = 1
i = 1
RowCount = 1
ColumnCount = 1
  DirLoc = ThisWorkbook.Path & "\" 'location of files
  FName = Dir(DirLoc & "*.csv")
    Do While FName <> ""
        ImportCsvFile DirLoc & FName, ActiveSheet.Cells(R, 1)
        R = ActiveSheet.UsedRange.Rows.Count + 1
        FName = Dir
        Sheets("RAW").Range("B1:B6").Copy
        Sheets("Filtered").Cells(RowCount, ColumnCount).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
            Application.CutCopyMode = False
            ColumnCount = ColumnCount + 6
        Set RangeObj = Cells.Find(What:="Run:", After:=ActiveCell, _
            LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, MatchCase:=False)
            RangeObj.Select
            Range("A1:A" & ActiveCell.Row - 1).EntireRow.Delete
        For i = 1 To 100
            RunTypeChooser = 0
                    'Discover what format the csv file is in (depending on the run type). This may be edited to include more if needed
            DiscoverRunType
                    'Based on the discovery this will systematically copy a run with the appropriate run type, and delete the run
            CopyMain
            If Range("A1") = 0 Then
                Exit For
            End If
        Next i
        i = 1
        ColumnCount = 1
    Loop
End Sub

Le code en question qui ne fonctionne pas est celui-ci:

Sheets ("RAW"). Range ("B1: B6"). Copier      Feuilles ("Filtered"). Cellules (RowCount, ColumnCount) .PasteSpecial      Coller: = xlPasteAll, Opération: = xlNone, SkipBlanks: = _      False, Transpose: = True      Application.CutCopyMode = Faux     ColumnCount = ColumnCount + 6

Il ne fonctionnera que sur la boucle numéro 1, mais plus jamais.

0
Une recherche rapide semble indiquer qu'il manque des parenthèses pour la ligne 'FName = Dir' qui devrait être 'FName = Dir ()' Je ne sais pas si cela va faire une différence car je n'ai pas codé ces types de fonctions auparavant - mais l'essayer et voir?
ajouté l'auteur Tragamor, source
Si vous ajoutez un point d'arrêt à cette ligne ... il ne frappera qu'une fois? Si c'est le cas, Dir ne trouve qu'un seul fichier. Si à la place la ligne est en cours d'exécution mais qu'il semble que rien ne se passe, le problème est probablement que vous utilisez Sheets sans vous préoccuper de Workbook . Sans Workbook mentionné, il utilisera le ActiveWorkbook qui peut ne pas changer dans ce code puisque vous avez un certain nombre de Subs nous ne voir. Ajoutez un point d'arrêt et cochez ? ActiveWork
ajouté l'auteur Byron Wall, source

1 Réponses

Brièvement, c'était une simple erreur. La valeur R était destinée à compter et à ajouter des cellules copiées après la section copiée précédente. Cela provoque le code à coller ci-dessous, et je ne le trouvais pas parce que le code est également censé supprimer toutes les cellules vides au-dessus de Run1.

La solution était de supprimer R et le code associé pour éviter d'ajouter la copie

0
ajouté