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(snum As Long) As String     If snum > 0 And snum <= Sheets.Count Then         TabName = Sheets(snum).Name     End If End Function

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

=TabName(4)

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

注:

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

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

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

このヒント(7607)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Referencing_a_Worksheet_Name [ワークシート名の参照]