Jonは、ワークシートに= ROW()または= COLUMN()と同等の関数があるかどうか疑問に思います。彼は(たとえば)ワークブックの4番目のシートを参照する必要がありますが、ワークシートの名前がわかりません。

何をする必要があるかに応じて、この問題に取り組む方法はいくつかあります。すでに保存されているワークシートを使用している場合は、次の式でSheet4のワークシート名を取得できます。

=MID(CELL("filename",Sheet4!A1),FIND("]",CELL( "filename",Sheet4!A1))+1,LEN(CELL("filename", Sheet4!A1)))

この式にはいくつかの仮定があることに注意してください。

まず(そして最も重要なことですが)、ワークシートの初期名を知っていることを前提としています。この場合、初期名はSheet4です。数式が配置されると、ワークシート名へのその後の変更は自動的に数式に反映されます。 2番目の前提は、作業中のブックが保存されていることです。そうでない場合は、ブックが保存されて再計算されるまで、数式はエラーを返します。

別のアプローチは、ユーザー定義関数を使用することです。 VBAのオブジェクトモデルでは、ブック内のすべてのワークシートがSheetsコレクションに含まれています。これらは、順番にインデックスが付けられます。したがって、インデックス値を関数に渡して、コレクションのインデックス番号でワークシートの名前を取得できます。

Function TabName(lSNum As Long) As String     If lSNum > 0 And lSNum <= Sheets.Count Then         TabName = Sheets(lSNum).Name     End If End Function

たとえば、コレクションの4番目のワークシートの名前を知りたい場合は、ワークシートで次を使用できます。

=TabName(4)

保存されていないブックでも、この機能は問題なく機能します。また、ワークシートの名前が変更されたり移動されたりした場合でも、適切なワークシート名が返されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11553)は、Microsoft Excel 2007、2010、および2013に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。