私は困惑しています。レジスターとしてのビジネスの一部のテンプレートとして使用されるワークブックがあります。ユーザーは、追跡している登録アイテムのリストを作成します。メイン レジスターの各項目について、問題の詳細を示すワークシートを作成する必要があります。新しいシートは、ワークブック "TemplateCRA" のテンプレートのコピーです。作成アクションは、登録シート「所有権」ですべてのエントリが作成または更新されたときに、単一のマクロを使用して実行されます。
私はこれから始めました:
Sub Button1_Click()
'
' Button1_Click Macro
'
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("Ownership").Range("B11:B30")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
If IsEmpty(MyCell) Then End
Sheets("TemplateCRA").Copy After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = "CRA Ref " & MyCell.Value ' renames the new worksheet
Range("B6").Value = ActiveSheet.Name
Next MyCell
End Sub
次に、登録されたアイテムのシートがまだ作成されていないことをマクロが最初に確認し、その場合はユーザーに警告しますが、アイテムリストを循環して作成し、必要な新しいシートを作成するために、これに進みました.
Sub Button2_Click()
'
' Button2_Click Macro
'
Dim MyCell As Range, MyRange As Range
Dim sh As Worksheet, flg As Boolean
Set MyRange = Sheets("Ownership").Range("B11:B30")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
If IsEmpty(MyCell) Then End
For Each sh In Worksheets
If sh.Name Like "CRA Ref " & MyCell.Value Then flg = True: Exit For
Next
If flg = True Then
MsgBox sh.Name & " Found!"
ElseIf flg = False Then
MsgBox "Creating CRA Ref " & MyCell.Value & " now!"
Sheets("TemplateCRA").Copy After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = "CRA Ref " & MyCell.Value ' renames the new worksheet
Range("B6").Value = ActiveSheet.Name
End If
Next MyCell
MsgBox "You may now complete your CRA for each item"
End Sub
しかし、これは正しく機能しません。何が起こるかは次のとおりです。
sh.Name チェックは
Run Time error 91 - object variable with block variable not set
、最初の MsgBox 行にシートが報告されていないアイテムが見つかるまで、シートが見つかったことを報告する OK を繰り返します。
誰かが私が間違っていることを提案できますか?
乾杯