1つのシート(「New Providers - FPPE」)の行をカットし、列(H)に基づいて複数のシートに貼り付けるマクロを作成しました。私が最初にそれを使用した場合、それがうまく働いていたが、私はソートシート(「新プロバイダ - 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
ディあなたは 'macros'タグの説明を読んでいますか?それはここに属しません。 – trincot
あなたは、ブック内の任意のグラフシートを持っていますか? – Rory
私は、ソートされた情報をフィルタリングするために、シートに表を挿入しています。それが機能に影響しますか? –