26

これは、ワークブックの最後の場所に新しいシートを追加するために使用する VBA コードです。

mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name

このサイトの同様の質問でこれを見ました。動いていない。

これをループで実行すると、各シートがシートの 2 番目の位置に追加されます。そこに永続的に存在する 2 つのシート (情報と要約) があり、その後に「テスト」と呼ばれる 1 から 5 までの 5 つのシートを追加する前に、常に次の順序でシートを作成します。

Info, sheet5, sheet4, sheet3, sheet2, sheet1, Summary

しかし、私が望んでいた/期待していたのは:

Info, Summary, sheet1, sheet2, sheet3, sheet4, sheet5

(ループは期待される順序でそれらを生成するため、問題はありません。)

始める前に要約と情報シートを交換すると、終わったときにそれらは反対の場所にあります.

私は何を間違っていますか?

4

4 に答える 4

45

これを試して

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
于 2012-07-12T16:17:25.890 に答える
7
mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 

おそらく

mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name 
于 2012-07-12T16:18:37.277 に答える
3

よくある間違いは

mainWB.Sheets.Add(After:=Sheets.Count)

これはエラー 1004 につながります。公式ドキュメントからはまったく明らかではありませんが、「After」パラメーターを整数にすることはできず、同じワークブック内のシートへの参照でなければならないことがわかります。

于 2014-09-15T21:11:25.217 に答える
1

参照しているワークブックでシートを完全に修飾してください。

 mainWB.Sheets.Add(After:=mainWB.Sheets(mainWB.Sheets.Count)).Name = new_sheet_name
于 2012-07-12T16:20:28.787 に答える