重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

コードを作成中に実際のExcel,sheet1をが不要になり削除しました。
オブジェクト欄には、順番にsheet2,sheet3......と表示されたままです、
この場合、実際のSheetのカウントは左からSheet1,Sheet2ではないのでしょうか?

コード作成にはどちらにそって作成しますか?

A 回答 (2件)

こんばんは、


>コード作成にはどちらにそって作成しますか?
既に回答されている通りで、
回答ではありませんが

#1さんの補足をさせていただきます。
オブジェクト欄のsheet2,sheet3.....は、文字通りオブジェクト名です。(VBEオブジェクト欄)
この名前を取得するには、ActiveSheet.CodeNameプロパティを使用しますが、設定は出来ませんので
通常、オブジェクト名で操作する事は無いと思います。(VBAでモジュールにコードを書き込むなどをする時には使う?)
なので、sheet1を消してオブジェクトがなくなっても、シート名にsheet1を付ける事は出来ます。

ActiveSheet.Index シートタグ左から
ActiveSheet.Name シートの名前
ActiveSheet.CodeName オブジェクトの名前
    • good
    • 1
この回答へのお礼

補足、ありがとうございました。
さらによく理解できました。VBEでコードを作成することはないのですね。
ずっと、もやもやしていたので、助かりました。

お礼日時:2020/07/05 01:00

こんにちは



シートの番号は Worksheets(n) です。(nは序数)
中間のシートが削除されたり追加されたりすると「特定のシート」の序数はそれに応じて変わる可能性があります。
一方で、Worksheets("Sheet1") の場合の「Sheet1」はシート名(シートの名前)であって、意図的に変更しない限り変わることはありません。

>実際のSheetのカウントは左からSheet1,Sheet2ではないのでしょうか?
「Sheet1」がシート名であるなら、シートの位置は自由に移動できます。左端になければならないということはありません。
Worksheets(1)のことであるなら、それはシートタブの左端にあるシートを意味します。
シートが入れ替わったとしても「左端にあるシート」を意味します。

試しに以下を実行してみれば、序数順のシート名がリストアップされます。
(素直なブックだと、シート名と序数の順が一致している可能性が高いので、シート位置を入れ替えたりしてみてください。)
 Sub Sample()
  For i = 1 To Worksheets.Count
   st = st & Worksheets(i).Name & vbNewLine
  Next
  MsgBox st
 End Sub

>コード作成にはどちらにそって作成しますか?
便利な方を利用します。
固定のシートを参照したい時はシート名を、順序が鍵となる場合は序列を(例えば、上のリストアップの事例)利用するでしょう。
    • good
    • 1
この回答へのお礼

Worksheets("sheet1"), Sheet(1) はコードを作成するうえでは、どちらでもいいのですね。
ありがとうございました。

お礼日時:2020/07/05 01:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!