메뉴
해결 엑셀2021윈도우10

행 삽입 매크로에서 디버그 오류가 뜹니다.

왕
9월 14일 조회 2,304
특정 열에 있는 숫자 값을 기준으로 행을 삽입하는 매크로를 만들어 봤습니다

아무래도 아직 매크로 이해도가 떨어져서 구글링 해서 짜집기 하는 방식으로 매크로를 짰는데...

정상 작동은 하나 자꾸 디버그 오류가 뜹니다.



이렇게 되어있던걸



이렇게 행 삽입 하고 있거든요. 정상 작동은 해서 사용은 하고 있으나 계속 오류가 뜨니 찝찝하네요.

아래 코드에서 노란색 칠한 부분이 오류가 뜹니다.

어떻게 해야 오류가 안날까요?

 

Sub Shiftrows
Dim lastRow As Long
Dim i As Long
Dim ShiftCount As Long

lastRow = Cells(Rows.Count, "a").End(xlUp).Row

For i = lastRow To 1 Step -1

ShiftCount = Cells(i, "a").Value - 1

If IsNumeric(ShiftCount) And ShiftCount >= 1 Then
Rows(i + 1 & ":" & i + ShiftCount).Insert Shift:=xlDown

End If
Next i
End Sub

 

이렇게 매크로를 짜봤는데 저기 노란색 부분이 자꾸 디버그 오류가 떠요.

댓글 6

원
원조백수 9월 14일
어떤 오류인가요?
혹시 Dim ShiftCount As Long -> As Variant로 바꿔 보세요.
왕
왕꿈틀이 작성자 9월 14일
@원조백수 님 답변 감사합니다. 한번 시도해보고 다시 댓글 달겠습니다.
왕
왕꿈틀이 작성자 9월 15일
@원조백수 님 기존 제가 올린 수식 확인해보니 런타임 13 오류가 뜹니다.
원
원조백수 채택된 답변 9월 15일
@왕꿈틀이 님 그럼 a열의 어느 셀이 숫자가 아닌 값이나 오류가 들어 있나 봅니다.
IF Not IsError(Cells(I, "a)).Value2) Then
IF IsNumeric(Cells(i, "a").Value2) Then
을 앞에 추가하여 오류나 숫자가 아닌 것은 skip하세요.
김
김재규 9월 14일
Option Explicit

Sub Shiftrows()
    Dim lastRow As Long
    Dim i As Long
    Dim ShiftCount As Long
    
    lastRow = Cells(Rows.Count, "a").End(xlUp).Row
    
    For i = lastRow To 1 Step -1
    
        ShiftCount = Cells(i, "a").Value - 1
        
        If IsNumeric(ShiftCount) And ShiftCount >= 1 Then
            Cells(i + 1, 1).Resize(ShiftCount, 1).Insert Shift:=xlDown, _
                CopyOrigin:=xlFormatFromLeftOrAbove
        End If
    Next i
End Sub

'또는

Sub 행삽입()
    Dim iLastRow As Integer, i As Integer
    Dim r As Range
    
    iLastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    With Sheet1
        For i = iLastRow To 2 Step -1
            Set r = .Cells(i, 1)
            r.Offset(1, 0).Resize(r.Value - 1, 1).Insert Shift:=xlDown, _
                CopyOrigin:=xlFormatFromLeftOrAbove
        Next i
    End With
End Sub

 
왕
왕꿈틀이 작성자 9월 14일
@김재규 님 답변 감사합니다. 한번 시도해 보겠습니다.

질문답변 게시판의 최근 글

스크랩 완료