VBA에서 코드가 가끔 충돌하는 경우가 있습니다.

VBA에서 코드가 가끔 충돌하는 경우가 있습니다.

나는 코드를 가지고있다. 셀에 Excel 통합 문서 경로를 입력하고 버튼을 클릭하면 통합 문서가 열리고 B2의 현재 통합 문서 데이터가 복사되어 새로 열린 통합 문서에 붙여넣어집니다. 코드가 잘 작동합니다. 하지만 문제는 코드가 충돌하고 가끔 오류가 발생한다는 것입니다. 내가 이해할 수 없는 문제는 무엇입니까? 코드가 괜찮지 않으면 코드가 완벽하게 실행될 수 없습니다. 하지만 내 경우에는 잘 실행될 때도 있고 오류가 발생할 때도 있습니다. 도와주세요. 여기에 오류가 있습니다 -

범위 클래스의 선택 방법이 실패했습니다.

그리고 여기에 코드가 있습니다 -

Private Sub CommandButton1_Click()

Dim pathCell As String

pathCell = Range("locationPath").Value


Dim wbTarget As Workbook 'workbook where the data is to be pasted
Dim wbThis As Workbook 'workbook from where the data is to be copied

'set to the current active workbook (the source book)
Set wbThis = ActiveWorkbook

'copy the range from source book
wbThis.Worksheets(1).Range("B1").Copy

'open a workbook that has same name as the sheet name
Set wbTarget = Workbooks.Open(pathCell)

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select

'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

'clear any thing on clipboard to maximize available memory
Application.CutCopyMode = False

Worksheets(1).Activate


End Sub

어떤 도움이라도 주시면 감사하겠습니다!

답변1

나는 그것이 포함하는 유일한 것이기 때문에 이 줄에서 실패한다고 가정합니다..Select

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select
  • 해당 행은 실행 시 Worksheets(2)활성 시트가 ​​아닌 경우 표시된 오류와 함께 실패합니다. 별도의 코드 줄에서 워크시트와 범위를 선택해야 합니다. 이것이 매크로가 간헐적으로만 오류가 발생하는 이유일 수 있습니다. 통합 문서를 닫기 전에 때로는 해당 워크시트에서 다른 곳으로 이동하지만 다른 때는 그렇지 않을 수도 있습니다.

  • 하지만, 붙여넣기 작업에 관한 한 목적에 부합하지 않는 것 같으며 줄을 삭제해도 붙여넣기가 잘 작동할 것입니다.

    • 후속 코드 줄은 대상 셀을 완전히 한정합니다.
'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

어떤 이유로 매크로가 완료될 때 반드시 해당 셀을 선택해야 하는 경우 먼저 워크시트를 선택하세요. 그런 다음 셀을 선택하십시오.

또한 참조하십시오Excel VBA에서 선택을 사용하지 않는 방법 우리 자매 stackoverflow 사이트에서.

관련 정보