2017-11-11 4 views
0

Ich versuche, ein Makro auszuführen, das nur eine Zeile zu meinem Datensatz alle 1200 Zeilen hinzufügt.Excel VBA - Erstellen Sie eine neue Zeile alle 1200 Zeilen

Ich habe versucht, eine For Step-Schleife ohne Erfolg zu verwenden.

Bitte lassen Sie mich wissen, wenn weitere Informationen benötigt werden.

Dank!

Edit: Schritt 1200

Sub Macro1() 

Dim lngLast_Row As Long 
Dim lngRow As Long 

lngLast_Row = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row 

For lngRow = 1 To lngLast_Row Step 1259 
    Range.Select 
    ActiveSheet.Cells(lngRow, 2).Value = lngRow 
Next 

End Sub 
+0

Wenn Sie Ihre Frage bearbeiten, um den Code einzubeziehen, der nicht funktioniert, können wir das Problem möglicherweise erkennen. – YowE3K

+1

meinst du ** eine Zeile einfügen **? Auch nicht sicher, warum Sie "Step 1259" statt Step 1200 verwenden? – Slai

Antwort

0

Ich habe VB nie verwendet, aber beschäftige ich mich mit einer Menge von C# -Programme, ich möchte nur helfen Sie mit diesem Pseudo-Code, wenn Sie eine Idee zu bekommen.

void addRow(Excel worksheet) 
{  
    int countRows = worksheet.UsedRange.Rows.Count; //All used rows 


    for (int i = 1; i < countRows; i++) 
    { 
     if (i % 1200 == 0) 
     { 
     worksheet.Rows[i].Insert(); 
     } 
    } 
} 
0

den Code unten versuchen, es besser ist, wenn Sie auf ActiveSheet verlassen Sie sich nicht, stattdessen vollständig qualifizierte Version verwenden, wie ThisWorkbook.Sheets("Sheet1").

-Code

Option Explicit 

Sub Macro1() 

Dim lngLast_Row As Long 
Dim lngRow As Long 

With ThisWorkbook.Sheets("Sheet1") ' change "Sheet1" to your sheet's name (don't rely on ActiveSheet) 
    lngLast_Row = .Range("H" & .Rows.Count).End(xlUp).Row 

    For lngRow = 1 To lngLast_Row Step 1200 
     .Rows(lngRow).Insert ' add a row every 1200 rows 
     .Cells(lngRow, 2).Value = lngRow ' value of column B of the new row 
    Next 
End With 

End Sub 
1

Wir müssen über vorsichtig sein, wo ich anfangen soll, wie und zu stoppen, wo zu treten. OP-Bedarf ist in der Frage nicht vollständig definiert. Meine Wette ist, dass OP n Datenzeilen, 1 leere Zeile, n Datenzeilen usw.

hier ein Unter will, dies zu tun:

Public Sub SplitDataRowsInIslandsOf(ByVal plNumRowsPerIsland As Long, ByVal prngFirstDataCell As Excel.Range) 
    Dim lastRow As Long 
    Dim insertRow As Long 

    With prngFirstDataCell.Worksheet 
     lastRow = .Cells(.Rows.Count, prngFirstDataCell.Column).End(xlUp).Row 
    End With 

    'In calculating the loop's upper bound, account for the rows that will be inserted, 
    'and avoid operating past the last data row. 
    lastRow = lastRow + ((lastRow - prngFirstDataCell.Row + 1) \ plNumRowsPerIsland) - 1 

    For insertRow = (prngFirstDataCell.Row + plNumRowsPerIsland) To lastRow Step (plNumRowsPerIsland + 1) 
     prngFirstDataCell.Worksheet.Cells(insertRow, 1).EntireRow.Insert 
    Next 
End Sub 

Für Inseln 1'200 Reihen, wenn die erste Zelle in einer Spalte Daten (reallly, jede Spalte, die verwendet werden können, die letzte Datenreihe zu erkennen), die H2 auf dem aktiven Arbeitsblatt ist, würde man nennen:

SplitDataRowsInIslandsOf 1200, ActiveSheet.Range("H2") 

natürlich sollten wir nicht aktiv werden (xyz), aber das ist eine andere Geschichte.

Verwandte Themen