VBA 쿼리 - 기존 코드 조정

VBA 쿼리 - 기존 코드 조정

나는 다음을 포함하여 내가 원하는 작업을 수행하는 데 도움이 되는 약간의 VBA를 찾았습니다.

With ThisWorkbook.Sheets(TargetSh) 
NxtEmptyRw = .Cells(65536, 1).End(xlUp).Row + 1 
.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw, 3).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw, 4).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 
End With 
End Sub

을 참조하는 줄을 어떻게 조정하여 동일한 행을 따라 진행하는 G2대신 의 값 아래의 값을 반환하도록 하려면 C21행 4열 테이블이 아닌 2행 2열 테이블을 효과적으로 생성해야 합니까?

답변1

나는 다음과 같은 더 짧은 솔루션을 선호합니다.

With ThisWorkbook.Sheets(TargetSh) 
  NxtEmptyRw = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 
  ActiveWorkbook.Sheets(SourceSh).Range("C2:C3,G2:G3").Copy
  .Cells(NxtEmptyRw, 1).PasteSpecial xlPasteValues, , , True
End With

답변2

바꾸다:

.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw, 3).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw, 4).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 

와 함께:

.Cells(NxtEmptyRw, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("C2").Value 
.Cells(NxtEmptyRw, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("C3").Value 
.Cells(NxtEmptyRw + 1, 1).Value = ActiveWorkbook.Sheets(SourceSh).Range("G2").Value 
.Cells(NxtEmptyRw + 1, 2).Value = ActiveWorkbook.Sheets(SourceSh).Range("G3").Value 

관련 정보