2017-01-18 1 views
1

테이블/범위를 필터링하는 코드를 작성한 다음 결과를 복사하고 새 통합 문서를 만들고 거기에 데이터를 붙여 넣으려고합니다 (붙여 넣기 값 : &).데이터 값 붙여 넣기 - 시트를 다른 시트로 복사

또한 완료 후에 소스 테이블에서 필터를 지우려고 시도합니다.

A1 (헤르쯔 포함)에서 새 통합 문서의 데이터를 붙여 넣을 수 없습니다. 그것은 막히게되고 "범위가 정의되지 않았다"라고 말한다. (서식을 붙여 넣기 만하고 값을 붙여 넣으려고하면 붙어 있습니다.)

나는 또한 vba를 처음 사용하지만 느낌이 코드에서 시작하는 Selection.Copy; 통합 문서. 행을 추가하면 기본/오류가 발생하고 오류가 발생하기 쉽습니다.

도와주세요,이 코드입니다 :

Sub ExportRezAng() 
' 
' ExportRezAng Macro 


    Dim src As Worksheet 
    Dim tgt As Worksheet 
    Dim filterRange As range 
    Dim copyRange As range 
    Dim lastRow As Long 

    Set src = ThisWorkbook.Sheets("- - REZULTAT ANAF - -") 


    ' turn off any autofilters that are already set 
    src.AutoFilterMode = False 

    ' find the last row with data in column A 
    lastRow = src.range("D" & src.Rows.Count).End(xlUp).Row 

    ' the range that we are auto-filtering (all columns) 
    Set filterRange = src.range("A3:R" & lastRow) 

    ' the range we want to copy (only columns we want to copy) 
    ' in this case we are copying country from column A 
    ' we set the range to start in row 2 to prevent copying the header 
    Set copyRange = src.range("A3:N" & lastRow) 

    ' filter range based on column B 
    filterRange.AutoFilter Field:=9, Criteria1:="DA", _ 
     Operator:=xlOr, Criteria2:="=NU" 

    ' copy the visible cells to our target range 
    ' note that you can easily find the last populated row on this sheet 
    ' if you don't want to over-write your previous results 
    copyRange.SpecialCells(xlCellTypeVisible).Select 

'여기에서 문제 START!

Selection.Copy 
    Workbooks.Add 
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
    range("A1").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 


    Columns("M:N").Select 
    Application.CutCopyMode = False 
    Selection.NumberFormat = "m/d/yyyy" 
    Sheets("Sheet1").Select 
    Sheets("Sheet1").Name = "CREDIT_DOSARE_EXECUTORI" 

ThisWorkbook. _ 
     Activate 
    Rows("3:3").Select 
    Application.CutCopyMode = False 
    ThisWorkbook.Worksheets("- - REZULTAT ANAF - -").AutoFilter.Sort.SortFields. _ 
     Clear 
    ActiveSheet.ShowAllData 


End Sub 

답변

0

코드에서 참조한 통합 문서 또는 시트를 알 수 없습니다.

Sub ExportRezAng() 
' 
' ExportRezAng Macro 
    Dim Src As Worksheet 
    Dim tgt As Worksheet 
    Dim filterRange As Range 
    Dim copyRange As Range 
    Dim lastRow As Long 
    Dim wB As Workbook 

    Set Src = ThisWorkbook.Sheets("- - REZULTAT ANAF - -") 

    ' turn off any autofilters that are already set 
    Src.AutoFilterMode = False 

    ' find the last row with data in column A 
    lastRow = Src.Range("D" & Src.Rows.Count).End(xlUp).Row 

    ' the range that we are auto-filtering (all columns) 
    Set filterRange = Src.Range("A3:R" & lastRow) 

    ' the range we want to copy (only columns we want to copy) 
    ' in this case we are copying country from column A 
    ' we set the range to start in row 2 to prevent copying the header 
    Set copyRange = Src.Range("A3:N" & lastRow) 

    ' filter range based on column B 
    filterRange.AutoFilter Field:=9, Criteria1:="DA", _ 
     Operator:=xlOr, Criteria2:="=NU" 

    ' copy the visible cells to our target range 
    ' note that you can easily find the last populated row on this sheet 
    ' if you don't want to over-write your previous results 
    copyRange.SpecialCells(xlCellTypeVisible).Copy 

    Set wB = Workbooks.Add 
    With wB.Sheets(1) 
     With .Range("A1") 
      .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
       SkipBlanks:=False, Transpose:=False 
      .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
       SkipBlanks:=False, Transpose:=False 
      Application.CutCopyMode = False 
     End With '.Range("A1") 
     .Columns("M:N").NumberFormat = "m/d/yyyy" 
     .Name = "CREDIT_DOSARE_EXECUTORI" 
    End With 'wB.Sheets(1) 

    Src.AutoFilter.Sort.SortFields.Clear 
    Src.ShowAllData 
End Sub 
+0

당신은 right..Thank입니다 :) – MisterA

+0

마지막 질문을하시기 바랍니다, 내가 한 번에 두 범위를 복사 할 경우 :

이를 참조하십시오.? copyRange = Src.range ("A3 : H, O3 : R"& lastRow) - 복사 - 붙여 넣기의 특정 열을 건너 뛸 때와 같이 어떻게 할 수 있습니까? – MisterA

+0

@mistera : 잘 모르겠습니다. 일반적으로 매크로 레코더를 사용하고 코드를 사용자 정의합니다! 하지만 붙여 넣기는 아마도 엉망이 될 것이므로 2 copy/paste에서 그것을 할 수 있습니다! ;) – R3uK

관련 문제