2013-10-14 2 views
0

사용자가 빈 행을 데이터 세트에 삽입하기 시작할 행을 지정할 수있게해야합니다. 나머지 쿼리는 제대로 작동하는 것 같습니다. 이 마지막 변수를 통합하는 방법을 모르겠습니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.사용자 지정 행에서 가변 행 번호 삽입

Dim NumRowsToInsert As Long 
Dim RowIncrement As Long 
Dim ws As Excel.Worksheet 
Dim LastRow As Long 
Dim LastEvenlyDivisibleRow 
Dim i As Long 

NumRowsToInsert = InputBox("How many rows would you like to insert between each 
row of data?")  'any number greater than 0 
RowIncrement = InputBox("How many rows of data between line inserts?")  'ditto 
Set ws = ActiveSheet 
With ws 
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
    LastEvenlyDivisibleRow = Int(LastRow/RowIncrement) * RowIncrement 
    If LastEvenlyDivisibleRow = 0 Then 
     Exit Sub 
    End If 
    Application.ScreenUpdating = False 
    For i = LastEvenlyDivisibleRow To 1 Step -RowIncrement 
     .Range(i & ":" & i + (NumRowsToInsert - 1)).Insert xlShiftDown 
    Next i 
End With 
Application.ScreenUpdating = True 
End Sub 

답변

0

을 왜 그냥 InputBox를 사용하여 나머지 행에 대해 행을 알리는 것을 사용자에게 요청 하시겠습니까? 사용자가 어떤 행을 시작할 것인지 묻고 마지막 for 루프가 1을 향해가 아니라 사용자 지정 행쪽으로 카운트하도록 코드를 변경했습니다. 사용자가 문서 끝보다 아래쪽에 행을 지정하지 않았는지 확인하려면 몇 가지 검사를 포함해야하지만 원리는 정확해야합니다. 나는이 코드를 아직 테스트하지 않았으므로 보장 할 수 없다!

Dim NumRowsToInsert,FirstRow As Long 
Dim RowIncrement As Long 
Dim ws As Excel.Worksheet 
Dim LastRow As Long 
Dim LastEvenlyDivisibleRow 
Dim i As Long 

Do 
    FirstRow = InputBox("Please indicate at which row you want to start.") 
Loop until isnumeric(FirstRow) 'keeps on asking until they enter an actual number, otherwise the program will lose its mind when the user inputs a character 

NumRowsToInsert = InputBox("How many rows would you like to insert between each row of data?")  'any number greater than 0 
RowIncrement = InputBox("How many rows of data between line inserts?")  'ditto 
Set ws = ActiveSheet 
With ws 
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
LastEvenlyDivisibleRow = Int(LastRow/RowIncrement) * RowIncrement 
If LastEvenlyDivisibleRow = 0 Then 
    Exit Sub 
End If 
Application.ScreenUpdating = False 
For i = LastEvenlyDivisibleRow To FirstRow Step -RowIncrement 
    .Range(i & ":" & i + (NumRowsToInsert - 1)).Insert xlShiftDown 
Next i 
End With 
Application.ScreenUpdating = True 
End Sub 
0

는 내가 4의 증가 및 당신이 4 행의 제 1 및 제 2 그룹이하고 싶은 10 행의 데이터에서 분리 한 라인을 주어 가정 한 빈 행은 그들과 마지막 그룹 사이에 삽입 2 행의 데이터가 남아 있습니다. 이 이전에 한 행을 삽입하고 나머지 작업을하게

For i = LastEvenlyDivisibleRow **+ 1** To 1 Step -RowIncrement 

첫 번째 라인은 루프의 첫 번째 단계를 건너 뛸 수 있습니다 삽입하지 않으려면 :

For i = LastEvenlyDivisibleRow **+ 1** To 2 Step -RowIncrement 
+1

답변을 수락하면 대개 시간이 지나면 끝나고 어느 쪽이든 대답하면 가장 잘 답변됩니다. 때때로 어떤 대답도 충분하지 않습니다 - 인내심을 가져라. – Orbling