6 행과 1 열에서 26 열로 가서 Earned Cumulative Hours라는 문장을 검색하려고합니다. 이 작업이 완료되면 행 6에 누적 시간 누적 시간이있는 열에 대해 행 8에서 마지막 행 (이 경우 30)으로 이동하려고합니다. 그런 다음이 열의 셀 값을 붙여 넣으려고합니다. 같은 행에 2 개의 셀이 남았습니다. 하지만 계속 오류가 발생하고 코드가 작동하지 않습니다.
누군가 나를 올바른 방향으로 가리킬 수 있습니까? 감사
Sub project()
Dim lastrow As Long
Dim i As Long
Dim j As Long
lastrow = Sheets("Progress").Cells(Rows.Count, 26).End(xlUp).Row
For j = 1 To 26
If Cells(6, j) = "Earned Cumulative Hours" Then
For i = 8 To lastrow
Cells(i, j).Copy
Cells(i, j).Offset(0, -2).Select
Selection.PasteSpeical Paste:=xlPasteValues
Next i
End If
Next j
End Sub
귀하의 코드에서 바로 볼 수있는 몇 가지 문제가 있습니다. 먼저 두 열 .Cells(i, j).Offset(0, -2)
을 다시 오프셋하는 경우 기존 값을 덮어 씁니다. 이것이 당신이하려는 일이라면 이상하지만 괜찮습니다.
다음 문제는 'Earned Cumulative Hours'가 A 열에 있으면 문제가 있다는 것입니다.이 경우 Excel은 왼쪽으로 두 개의 열을 오프셋하려고 시도하는 것이 가장 불만스럽고 오류가 발생합니다.
이 경우 복사하여 붙여 넣는 대신 한 열의 값을 내 코드에서 볼 수있는 다른 열로 설정하는 것이 더 효율적입니다. 마지막으로 셀 참조는 활성 시트에 대해서만 유효합니다. 내 코드에 표시된대로 관심있는 워크 시트를 한정해야합니다. 일반적으로 자체 포함 된 블록 인 경우 코드 시작 부분에 이것을 넣습니다.
i
루프를 제거하고 한 번에 값 범위를 설정할 수도 있지만 다음 시간을 위해 저장하겠습니다!
이 코드를 테스트하지는 않았지만 괜찮을 것입니다.
Sub projectawesome()
Dim lastrow as Long, i as Long, j as Long
'Qualify the sheet (assuming its in the activeworkbook)
With Sheets("Progress")
lastrow = .Cells(.Rows.Count, 26).End(xlUp).Row
'I've changed this to column three to prevent offset errors.
For j = 3 to 26
If .Cells(6, j) = "Earned Cumulative Hours" Then
For i = 8 to lastrow
'Assuming overwriting data is ok.
'No need to copy and paste
.Cells(i, j - 2).Value = .Cells(i, j).Value
Next i
End If
Next
End With
End Sub
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다