2012-01-19 18 views
0

は、私が使用してシートを追加しようとしています:ThisWorkbook.Sheets.Addアプリケーション定義またはオブジェクト定義のエラー

は、私は1枚のシートを追加することですが、私は2枚を追加しようとすると、それは私にエラーを与える:アプリケーション定義またはオブジェクト定義のエラー。ここで

はシートを追加するコードです:

Application.ScreenUpdating = False 
Dim ws As Worksheet 
Set ws = ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count), Count:=2, Type:="C:\Users\TestUser\Desktop\TestWorksheet.xltm") 
Set ws = Nothing 
Application.ScreenUpdating = True 

私はCount:=1を変更すると、それが正常に動作しますが、それはあなたのようにそれを設定するためです事前

答えて

1

、あなたがxlChart(デフォルトである)xlWorksheetを追加しようとしているときのみ動作します「カウント」xlExcel4MacroSheet、またはxlExcel4IntlMacroSheetを含めることはできません。

あなたがxlWorksheetが含まれていない場合であっても

Sub Sample1() 
    Dim ws As Worksheet 

    Set ws = ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count), Count:=5, Type:=xlWorksheet) 

    Set ws = Nothing 
End Sub 

例えばそれは、デフォルトで取られるように、それは大丈夫です。

テンプレートから追加するときは、ループで行う必要があります。たとえば、

Sub Sample2() 
    Dim ws As Worksheet 
    Dim i As Long 

    Application.ScreenUpdating = False 

    i = 1 

    Do While i < 3 '<~~ Adding 2 times 
     Set ws = ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count), _ 
     Type:="C:\Users\TestUser\Desktop\TestWorksheet.xltm") 
     i = i + 1 
    Loop 

    Set ws = Nothing 

    Application.ScreenUpdating = True 
End Sub 
+0

あなたのメソッドを使用すると、型の不一致エラーが発生します – user793468

+0

私はそれを動作させました。私は "ws"それを「ワークシート」として定義することで、ワークシートが機能するようになりました。ありがとう! – user793468

+0

特定のシートを複数挿入すると、2番目のシートの名前の後にa(2)という名前が付けられます。例えば、私は2つの "学生"シートを挿入している場合。最初のシートには「Student」という名前が付けられ、2番目のシートには「Student(2)」という名前が付けられます。 – user793468

2

Count:=2

感謝のエラーを表示しますWSは、ワークシートとして定義されています。だから、複数のワークシート

+0

これをワークシートとして定義すると、他にどのように定義するのですか? – user793468

+0

@ user793468申し訳ありませんが、私の主張は不可能だということでした。オブジェクトを設定している 'Set'を使うと、2つのワークシートをオブジェクトにすることはできません。 – Skytunnel

+0

@ user793469さらに、コード内でそのオブジェクトを再度参照する必要がある場合にのみ、 'Set'を使う必要があります。 'Set ws ='を取ると、その1行のコードだけで複数のシートを追加することができます – Skytunnel

関連する問題