이 코드를 검토하고있었습니다.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 1 And Target.Offset(1, 0) = "" Then
Target.Offset(-1, 0).Copy
Target.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End If
End Sub
기본적으로이 작업은 입력 / 붙여 넣기중인 데이터 위에 셀의 형식을 복사하여 여러 셀을 붙여 넣으면 모든 셀에 형식을 복사하기 시작합니다.
이 코드를 테스트했지만 대부분의 경우 '13 런타임 오류가 발생합니다. 다른 것은 작동 할 때 A 열에서만 작동하지만 어떤 이유로 코드가 불안정하지 않고 약 1.3 초가 걸립니다. 작동합니다. 코드의 실제 목적이 정확히 붙여 넣은 모든 유형의 데이터가 그 위에 셀 형식을 갖도록 강제하는 것입니다. 입력 한 경우에만 정보를 셀에 붙여 넣을 때 작동하지 않습니다.
데이터를 입력하고 있지만 A 열뿐만 아니라 모든 열에 적용 할 수 있도록이 코드를 어떻게 복사 / 붙여 넣기 할 수 있습니까?
또한 코드를 더 빠르게 실행할 수있는 방법이 있습니까? 아무것도 삭제하면 오류 '13도 표시됩니다. 또한 이미 작업 한 Excel 시트에 코드를 붙여 넣으면 전혀 작동하지 않습니다.
위의 주석에서 이벤트 루프에 대해 언급 했으므로 이벤트 핸들러를 사용할 때이를 염두에 두는 것이 중요합니다.
이 줄은 코드를 A 열, 특히 "And"앞의 비트로 만 제한합니다.
If Target.Column = 1 And Target.Offset(1, 0) = "" Then
여기서 이러한 변경을 수행하지만 행 1을 제외하도록 제한합니다 ( Target.Offset(-1,0)
1 행에서 수행하면 오류가 발생합니다).
또한 단일 셀 의 대상에서만 작동하도록 제한 할 것 입니다.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Not Target.Cells.Count = 1 Or Target.Row = 1 Then Exit Sub
If Target.Offset(1, 0) = "" Then
Target.Offset(-1, 0).Copy
Target.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End If
Application.EnableEvents = True
End Sub
물론 일정 범위의 셀에서 이벤트 처리기를 사용할 수는 있지만 오류가 발생합니다 Target.Offset(1,0)
(실제로 .Value
해당 셀의를 요청합니다 . 여러 셀 의 범위이면 실패합니다 .). 내가 말했듯이 주변에 방법이 있지만 실제로 필요한 것을 알지 못하면 정확한 제안을하기가 어렵습니다.
이것은 작동 할 수 있습니다. 여전히 단일 행으로 제한 되지만 여러 셀에서 작동한다고 생각합니다.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Dim nextRow as Variant
If Not Target.Rows.Count = 1 Or Target.Row = 1 Then Exit Sub
'store the next row in an array:
nextRow = Application.Transpose(Application.Transpose(Target.Offset(1, 0).Value)
If Join(nextRow, "") = "" Then
Target.Offset(-1, 0).Copy
Target.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End If
Application.EnableEvents = True
End Sub
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다