2016-07-21 2 views
0

한 시트 ("New Providers - FPPE")의 행을 잘라내어 열 (H)을 기준으로 여러 시트로 붙여 넣기하는 매크로를 작성했습니다. 처음 사용했을 때 제대로 작동했지만 정렬 시트 ("New Providers - FPPE")에 추가 데이터를 추가하면 완전히 작동하지 않습니다. 매크로 "새 공급자 - FPPE"에서 행을 계속 잘라내지 만 행이 시트에 채워지지 않습니다. 나는 행이 어디로 가고 있는지 전혀 모른다. 아무도 무슨 일이 일어날 수있는 어떤 통찰력을 가지고 있습니까? 나는 매크로를 작성하는 것에 매우 익숙하기 때문에 어떤 도움을 주시면 감사하겠습니다! 이것에정렬 매크로가 제대로 작동하지 않습니다.

InsertSheet customer 
    Set ws = Sheets(Worksheets.Count) 
    CopyRow i, sh, ws, custNameColumn 

:

Function InsertSheet(shName As String) As Worksheet 
    Set InsertSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count)) 
    InsertSheet.Name = shName 
End Function 

다음 코드의이 부분을 변경

Option Explicit 

Sub Fr33M4cro() 

Dim sh33tName As String 
Dim custNameColumn As String 
Dim i As Long 
Dim stRow As Long 
Dim customer As String 
Dim ws As Worksheet 
Dim sheetExist As Boolean 
Dim sh As Worksheet 

sh33tName = "New Providers - FPPE" 
custNameColumn = "H" 
stRow = 7 

Set sh = Sheets(sh33tName) 

For i = sh.Range(custNameColumn & sh.Rows.Count).End(xlUp).Row To stRow Step -1 
    customer = sh.Range(custNameColumn & i).Value 
    For Each ws In ThisWorkbook.Sheets 
     If StrComp(ws.Name, customer, vbTextCompare) = 0 Then 
      sheetExist = True 
      Exit For 
     End If 
    Next 
    If sheetExist Then 
     CopyRow i, sh, ws, custNameColumn 
    Else 
     InsertSheet customer 
     Set ws = Sheets(Worksheets.Count) 
     CopyRow i, sh, ws, custNameColumn 
    End If 
    Reset sheetExist 
Next i 

End Sub 

Private Sub CopyRow(i As Long, ByRef sh As Worksheet, ByRef ws As Worksheet, custNameColumn As String) 
Dim wsRow As Long 
wsRow = ws.Range(custNameColumn & ws.Rows.Count).End(xlUp).Row + 1 


ws.Rows(wsRow).EntireRow.Value = sh.Rows(i).EntireRow.Value 
sh.Rows(i).EntireRow.Delete 
End Sub 


Private Sub Reset(ByRef x As Boolean) 
x = False 
End Sub 

Private Sub InsertSheet(shName As String) 
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = shName 
End Sub 
+0

디 d 매크로의 설명을 읽었습니까? 그것은 여기에 속하지 않습니다. – trincot

+0

통합 문서에 차트 시트가 있습니까? – Rory

+0

정렬 된 정보를 필터링하기 위해 시트에 표를 삽입했습니다. 그 기능에 영향을 미칠까요? –

답변

0

난 당신이 삽입 된 워크 시트에 대한 참조를 반환하는 함수에 InsertSheet 서브를 변경 제안 :

Set ws = InsertSheet(customer) 
    CopyRow i, sh, ws, custNameColumn 
+0

여전히 행을 자르고 있지만 어디에도 삽입하지 않습니다. –

+0

오류가 발생하지 않는 한 ** 어딘가에 있습니다. 데이터가 있어야한다고 생각하는 시트 중 하나에서 Ctrl + End 키를 눌러 보았습니까? – Rory

+0

아, 도움이됩니다. 고맙습니다! –

관련 문제