2017-12-01 21 views
0

저는 VBA에 익숙하지 만 여전히 학습이 느립니다. 조금 느리면 저와 함께하시기 바랍니다.Excel 매크로 붙여 넣기 특별 값

아래 매크로를 변경하여 특수 값을 붙여 넣으려고합니다. 지금 당분간 인터넷 검색을하고 있지만 작동하지 않습니다. 내가 엑셀 ​​2016 사전에 도움을

감사를 사용하고

.

Private Sub Copy_Existing_Asset_Click() 

    Dim i As Long 
    Dim iLastRow As Long 
    Dim iTarget As Long 

    With Worksheets("Popcorn") 

     iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     For i = 1 To iLastRow 
      If .Cells(i, "A").Value = "Capex" Then 
       iTarget = iTarget + 1 
       .Cells(i, "B").Copy Worksheets("Sheet7").Range("A" & iTarget + 1) 
       .Cells(i, "C").Copy Worksheets("Sheet7").Range("B" & iTarget + 1) 
       .Cells(i, "D").Copy Worksheets("Sheet7").Range("C" & iTarget + 1) 
       .Cells(i, "E").Copy Worksheets("Sheet7").Range("D" & iTarget + 1) 
       .Cells(i, "F").Copy Worksheets("Sheet7").Range("F" & iTarget + 1) 
       Worksheets("Sheet7").Range("G" & iTarget + 1).Value = "Hello" 
       Worksheets("Sheet7").Range("H" & iTarget + 1).Value = "How" 
       Worksheets("Sheet7").Range("I" & iTarget + 1).Value = "Are" 
       Worksheets("Sheet7").Range("J" & iTarget + 1).Value = "You" 
       .Cells(i, "N").Copy Worksheets("Sheet7").Range("K" & iTarget + 1) 
       .Cells(i, "O").Copy Worksheets("Sheet7").Range("L" & iTarget + 1) 
       .Cells(i, "P").Copy Worksheets("Sheet7").Range("M" & iTarget + 1) 
       .Cells(i, "Q").Copy Worksheets("Sheet7").Range("N" & iTarget + 1) 
       .Cells(i, "R").Copy Worksheets("Sheet7").Range("O" & iTarget + 1) 
      End If 
     Next i 

    End With 


    With Worksheets("Chips") 

     iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     For i = 1 To iLastRow 
      If .Cells(i, "A").Value = "Capex" Then 
       iTarget = iTarget + 1 
       .Cells(i, "B").Copy Worksheets("Sheet7").Range("A" & iTarget + 1) 
       .Cells(i, "C").Copy Worksheets("Sheet7").Range("B" & iTarget + 1) 
       .Cells(i, "D").Copy Worksheets("Sheet7").Range("C" & iTarget + 1) 
       .Cells(i, "F").Copy Worksheets("Sheet7").Range("D" & iTarget + 1) 
       .Cells(i, "G").Copy Worksheets("Sheet7").Range("F" & iTarget + 1) 
       Worksheets("Sheet7").Range("G" & iTarget + 1).Value = "Hello" 
       Worksheets("Sheet7").Range("H" & iTarget + 1).Value = "How" 
       Worksheets("Sheet7").Range("I" & iTarget + 1).Value = "Are" 
       Worksheets("Sheet7").Range("J" & iTarget + 1).Value = "You" 
       .Cells(i, "R").Copy Worksheets("Sheet7").Range("K" & iTarget + 1) 
       .Cells(i, "S").Copy Worksheets("Sheet7").Range("L" & iTarget + 1) 
       .Cells(i, "T").Copy Worksheets("Sheet7").Range("M" & iTarget + 1) 
       .Cells(i, "U").Copy Worksheets("Sheet7").Range("N" & iTarget + 1) 
       .Cells(i, "V").Copy Worksheets("Sheet7").Range("O" & iTarget + 1) 
      End If 
     Next i 

    End With 


    MsgBox ("Thank You") 

End Sub 
+1

무엇이 질문입니까? –

+0

* 작동하지 않습니다 *는 의미있는 문제 설명이 아닙니다. 몇 분 정도 [Ask]를 읽은 다음 게시물을 다시 방문하여 [편집]하여 문제가 무엇인지 명확하게 설명하고 ** 특정 ** 질문을하십시오. –

+0

괜찮아요 - 위 매크로에 수식을 업데이트하여 특수한 것을 붙여 넣어야합니다. –

답변

0

나는 당신이 질문을 이해 생각한다. 붙여 넣기 값이나 붙여 넣기 수식과 같은 특수 붙여 넣기 기능을 사용하는 방법을 알고 싶습니다.

당신이 이미 그것을하고있는 것과 매우 비슷합니다. 하지만 먼저 한 가지를 지적하고 싶습니다. 현재 수행중인 방식 (Range("A1").Copy Range("A2"))은 .PasteSpecial이 필요하지 않을 때 가장 좋습니다. 창문 클립 보드를 사용하지 않아도되므로 훨씬 빠릅니다 (특히 많은 셀을 복사/붙여 넣을 때).

하지만 붙여 넣기 값을 사용하는 경우에만 사용합니다 당신이 .PasteSpecial에 입력 할 때이

Range("A1").Copy 
Range("A2").PasteSpecial xlPasteValues 

는 당신은 다른 .PasteSpecial 모든 옵션을 볼 수 있습니다. 또는 다음 웹 사이트를 참조하십시오. https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlpastetype-enumeration-excel

그러나 가능한 한 항상 매크로를 사용하여 Windows 클립 보드를 사용하지 못하도록 막을 수 있습니다.