2016-04-27 18 views
1

Ich versuche, alle Zellen mit Wert in der 2. Zeile zu kopieren 'coz 1. Zeile ist die Überschrift/Titel. Mein Code scheint jedoch ALLE Zellen mit Wert auszuwählen. :(
Hier ist mein Code zu kopieren:Wählen Sie alle Zellen mit Wert aus bestimmten Zeile

Dim myData As Workbook 
Set myData = Workbooks.Open("C:\Book2.xlsx") 

Worksheets("Sheet1").Range("A2").Select 
Worksheets("Sheet1").Range("A2").CurrentRegion.Copy 
+1

[Größe ändern] (https://msdn.microsoft.com/en-us/library/office/ff196678.aspx). – findwindow

+1

persönliche Präferenz natürlich, aber vielleicht möchten Sie Ihren Namen aus diesem Dateipfad entfernen ... –

+0

@MacroMan niemand würde es bemerkt haben, bis Sie darauf hingewiesen = P – findwindow

Antwort

2

Sie müssen ausgeglichen und die Größe:

With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0) 
    .Resize(.Rows.Count - 1, .Columns.Count).Copy 
End With 
+0

Kein snobby Code dieses Mal? Downvote/Flagge. – findwindow

+2

http://img.memecdn.com/snob-raptor_o_2550779.jpg –

+0

Schöne .. es gibt ein kleines Problem mit diesem. Wenn Ihre Daten bis zur 5. Zeile sind und die Zeile 2 bis 10 Zeilen enthält, wird sie bis zur 10. Zeile kopiert. Dies geschieht auch dann, wenn die Formel einen leeren Wert zurückgibt –

6

Auch wenn Sie CurrentRegion in Ihrem Code erwähnt haben, ich vermute, dass Sie es nicht brauchen oder zumindest sind sie in der beabsichtigten Weise

ist nicht verwenden Planung Lassen sie unser Arbeitsblatt wie folgt aussieht sagen. die Formeln in Col F Beachten sie?

Das Problem mit .Resize ist, dass es Zellen enthält, die Formeln hat, auch wenn sie leere Werte zurückgeben.

Unter macroman dem Beispiel

Sub Sample() 
    With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0) 
     .Resize(.Rows.Count - 1, .Columns.Count).Select 
    End With 
End Sub 

enter image description here


Ich versuche, alle Zellen mit dem Wert in es aus der 2. Reihe zu kopieren ‚Coz erste Zeile ist die Überschrift/Titel.

Von dem, was ich verstehe, was Sie wollen, können indem der letzten Reihe und letzten Spalte erreicht werden, die Daten hat und das Kopieren.

Ich denke, das ist was du willst? Beachten Sie die Verwendung von LookIn:=xlValues mit .Find

Sub Sample() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim lRow As Long, lCol As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     lRow = .Cells.Find(What:="*", _ 
       After:=.Range("A1"), _ 
       Lookat:=xlPart, _ 
       LookIn:=xlValues, _ 
       SearchOrder:=xlByRows, _ 
       SearchDirection:=xlPrevious, _ 
       MatchCase:=False).Row 

     lCol = .Cells.Find(What:="*", _ 
       After:=.Range("A1"), _ 
       Lookat:=xlPart, _ 
       LookIn:=xlValues, _ 
       SearchOrder:=xlByColumns, _ 
       SearchDirection:=xlPrevious, _ 
       MatchCase:=False).Column 

     Set rng = .Range(.Cells(2, 1), .Cells(lRow, lCol)) 

     Debug.Print rng.Address 
     rng.Copy 
    End With 
End Sub 

enter image description here

+1

Dies wäre meine bevorzugte Methode anstelle von '.CurrentRegion' +1 –

+0

Ich versuchte dies & es funktioniert perfekt beim Kopieren aus der gleichen Arbeitsmappe. Ich habe vergessen zu spezifizieren, dass ich von einer anderen Arbeitsmappe kopiere. – Meedee

+0

Sie können dies auch in andere Arbeitsmappe kopieren :) –

Verwandte Themen