한 시트 ("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
디 d 매크로의 설명을 읽었습니까? 그것은 여기에 속하지 않습니다. – trincot
통합 문서에 차트 시트가 있습니까? – Rory
정렬 된 정보를 필터링하기 위해 시트에 표를 삽입했습니다. 그 기능에 영향을 미칠까요? –