2016-10-19 3 views
0

Ich bin super neu zu VB so Entschuldigungen, wenn das lächerlich einfach ist. Ich habe ein Makro, um ein Bestellformular in ein fortlaufendes Register von Bestellungen zu übertragen.Kopieren nur nicht leere Zeilen und Einfügen in die erste leere Zeile

Hier ist der Code, den ich habe:

Range("B2:X2").Select 
Application.CutCopyMode = False 
Selection.Copy 
Sheets("Register of Orders").Select 
Range("B9").Select 
ActiveSheet.Paste 

Statt Bereich B2: X2 Ich brauche alle nicht leeren Zeilen auszuwählen. Und statt Range B9 muss ich die erste leere Zeile am unteren Rand des Registers auswählen.

Ich habe mir hier ein paar Antworten angesehen und versucht, den vorgeschlagenen Code zu verwenden, aber ich habe immer einen Fehler bekommen, der Expected End Sub sagt.

+0

Können Sie uns den vollständigen Code geben? Sie möchten nur alle Blätter außer den leeren Zeilen kopieren? – Pierre

+0

Willkommen auf stackoverflow! Können Sie vielleicht ein Bild des Bestellformulars und der "Unterseite des Registers" hinzufügen? Ich verstehe nicht, wie es aussieht. Ist es ein neues Arbeitsblatt oder das gleiche? Ich bin sicher, dass wir helfen können. Der Fehler "Expected End Sub" tritt auf, wenn Sie Code in einen Bereich kopieren, der nicht von "Sub MakroName() ..... Ihr Code umschlossen ist .... End Sub – Stefan

+0

Ich bin anscheinend nicht erlaubt, Bilder hinzuzufügen Das Bestellformular und das Register befinden sich auf separaten Arbeitsblättern –

Antwort

0

Dies ist eine schwierige Frage, da wir Ihre Tabelle nicht sehen können.

Um Ihnen bei der Kopie zu helfen, kann der folgende Code hilfreich sein. Der Code kopiert Daten von B6 bis X6 von Sheet1 (Sie können dies in das Blatt Ihrer Daten ändern, solange es nicht im selben Blatt ist).

Der Code kopiert Daten aus Blatt1 in die "Register of Orders" Spalte zu einem Zeitpunkt ohne Leerzeichen zu ignorieren.

Sub test_copy_ignoring_blanks() 

    Sheets("Register of Orders").Select 
    Range("A1").select 'Data will be pasted To Cell A1 moving 1 column position 

    'Select the sheet where your data is I'm imagining this is sheet 1 
    Sheets(1).Select 


    Dim starting_column As Long 
    Dim ending_column As Long 

    'Set the starting and ending columns 
    Range("X6").Select 
    ending_column = ActiveCell.Column 
    Range("B6").Select 
    starting_column = ActiveCell.Column 

    'Loop through for the copy 
    For counter = starting_column To ending_column 
     Cells(6, counter).Select 
     If Not IsEmpty(ActiveCell.Value) Then 
     ' The cell is not empty so copy it and paste it to Regist Order 
     Selection.Copy 
     Sheets("Register of Orders").Select 
     'Select the Range you want to paste it in 
     ActiveSheet.Paste 
     'Move the cursor one to the right 
     ActiveCell.Offset(0, 1).Select 
     Sheets(1).Select 
     End If 
    Next 
End Sub 
+0

Wäre das nicht möglich, kopieren und einfügen über vorherige Bestellungen bereits in das Register, wenn es jedes Mal von A1 startet? –

+0

@HannahThorley Sie können die Zelle an Ihren gewünschten Ort ändern.Es ist unmöglich zu wissen wo Sie die Daten benötigen, um zu gehen. –

Verwandte Themen