私はここに何ヶ月も潜んでいて、仕事のレポートを自動化するためにvbaを学んでいますが、ついに私は完全に行き詰まり、オンラインで答えを見つけることができなくなりました。
社内の個人ごとに個別のシートを持つ自動生成されたレポートがあります。これには毎週静的なファイル名がないため、次のようなものが必要だと思います。
Dim thiswb as string
thiswb = activeworkbook.name
私がやりたいのは、thiswbの各シートについて、C4 onのセルの名前が、別のブックに保存したリストの名前と一致しない限りです(これには、「ジョブレポート」を変更しない静的な名前があります)。 )、シートが削除されます。そのため、最終的には、リストの名前ごとに別々のシートが記載されたワークブックが残ります。
どんな助けでもいただければ幸いです。さらに情報が必要な場合はお知らせください。
このコードを使用する前に、名前リストを「ジョブレポート」から同じワークシートにコピーしてください。次に、このマクロはブック内の各シートを循環しFIND
、名前が「スタッフ名」と呼ばれるタブのどこかにあるかどうかを識別するために使用します。
Dim focus_SHEET As Worksheet
Dim Rng As Range
For Each focus_SHEET In Sheets
focus_SHEET.Select
Set Rng = Sheets("staffnames").Cells.Find(Range("C4"), LookIn:=xlValues)
If focus_SHEET.Name = "staffnames" Then
'skip over the staff list
'do nothing
MsgBox ("skip " & focus_SHEET.Name)
ElseIf Not Rng Is Nothing Then
'found name on the list
'do nothing
MsgBox ("found " & Range("C4"))
Else:
'did not find name on the list
MsgBox ("unrecognized name: " & Range("C4"))
'delete the tab
Application.DisplayAlerts = False
focus_SHEET.Delete
Application.DisplayAlerts = True
End If
Next focus_SHEET
Set focus_SHEET = Nothing
Set Rng = Nothing
End Sub
スタッフ名のソースを自動的に開く機能をさらに追加することもできます。しかし、これはあなたを正しい方向に向かわせるはずです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加