도움을
그것을하는 또 다른 방법 ..... 덜 노름. of 루프.
가정
1 스킵 열은 오름차순이다.
2. 범위 건너 뛰기 값은 0이 아닌 1에서 시작합니다.
3. 범위 ("원본")는 원본 데이터의 첫 번째 셀입니다.
4. 범위 ("대상")는 대상 데이터의 첫 번째 셀입니다.
Sub SelectiveCopy(rngSource As Range, rngTarget As Range, intTotalColumns As Integer, skipColumnsArray As Variant)
If UBound(skipColumnsArray) = -1 Then
rngSource.Resize(1, intTotalColumns).Copy
rngTarget.PasteSpecial (xlPasteValues)
Else
Dim skipColumn As Variant
Dim currentColumn As Integer
currentColumn = 0
For Each skipColumn In skipColumnsArray
If skipColumn - currentColumn > 1 Then 'Number of colums to copy is Nonzero.'
rngSource.Offset(0, currentColumn).Resize(1, skipColumn - currentColumn - 1).Copy
rngTarget.Offset(0, currentColumn).PasteSpecial (xlPasteValues)
End If
currentColumn = skipColumn
Next
If intTotalColumns - currentColumn > 0 Then
rngSource.Offset(0, currentColumn).Resize(1, intTotalColumns - currentColumn).Copy
rngTarget.Offset(0, currentColumn).PasteSpecial (xlPasteValues)
End If
End If
Application.CutCopyMode = False
End Sub
를 호출하는 방법 :
SelectiveCopy Range("Source"), Range("Target"), 20, Array(1) 'Skip 1st column'
SelectiveCopy Range("Source"), Range("Target"), 20, Array(4,5,6) 'Skip 4,5,6th column'
SelectiveCopy Range("Source"), Range("Target"), 20, Array() 'Dont skip any column. Copy all.
감사합니다.
답장을 보내 주셔서 감사합니다. 나는 질문을 편집했다. 예를 들어, 내 요구 사항을 지우려는 예제를 추가했다. – Sambhaji
고맙습니다. 코드가 작동했습니다 ... – Sambhaji