2

5 枚のシートを持つ Excel マクロ有効ブックがあります。これらのシートの 1 つは「NC」という名前で、もう 1 つは「SC」という名前です。これらのシートの名前に日付を追加するコードの一部があります。

Sheets("NC").Name = "NC" & Replace(Date, "/", "-") Sheets("SC").Name = "SC" & Replace(Date, "/", "-")

その後、リセットボタンがクリックされた場合、以前の「NC」および「SC」の名前に戻すコードを作成しましたが、ここで問題が発生します。

Sheets(2).Name = "NC" Sheets(3).Name = "SC"

Sheets(2).Name = "NC" は正常に動作します Sheets(3).Name = "SC" ただし、代わりに Sheet(4) の名前を変更します

これらのシート コードまたはシート番号は、シート タブをどのように並べ替えたり並べ替えたりしても変わらないと思いました。Sheets(2) ではなく Sheets(3) の名前が正確に変更された理由がわかりません。以下のプロジェクト エクスプローラーを見てください。Sheets(4) の名前が「NCToday」から「SC」に変更されています。Sheets(3) は画像に "SC" を表示していますが、これは手動でリセットされたため、配置を見ることができます。コード Sheets(3).Name = "SC" は Sheets(4) の名前を "NCToday" から "NCToday" に変更すべきではありません (SHOULD NOT)。 「SC」。

シート リスト

4

3 に答える 3

2

Sheet(3) は必ずしも sheet3 を意味するとは限りません

例: ここに画像の説明を入力

イミディエイト ウィンドウに と入力すると、次の?worksheets(1).name結果が得られます。

シート 2

システムは、VBA プロジェクトの順序 (Sheet1、Sheet2、Sheet3) ではなく、Excel スプレッドシートのシートの順序 (Sheet2、Sheet1、Sheet3) を参照することに注意してください。

シートの名前を元に戻すには、最初に名前を変更するために使用した方法を逆にすることができます。

Sheets("SC" & Replace(Date, "/", "-")).Name = "SC"
于 2013-06-05T19:08:11.743 に答える
0

Like オプションを使用して、名前を変更する前にシート名を比較できますか?

Dim s as Worksheet
For each s in Worksheets

    if s.Name like "NC*" and not s.Name = "NCToday" then
         s.Name = "NC"
    end if

next

「コメントを再シャッフルしないでください」に頼ることなく、ページシャッフルを解決できますか?

このようなコメントは誤解を招きやすく、ある段階でコードに問題やエラーが発生する可能性があります。

試してみて、誰にでもできるようにすることをお勧めします。

幸運を !

乾杯 !

于 2015-10-02T13:27:37.593 に答える