Excelの「シート名」を取得・・・これができると意外と便利なんです。
たとえば、あるシート名が 「2023年8月」 だったとします。
この、シート名「2023年8月」を「2024年1月」に変更しただけで、シート内で「2023年8月」と表示されていたセルの値がすべて 「2024年1月」 に書き変わってくれたら便利だと思いませんか?
今回は シート名を取得 し、関数の場合は セルに表示、VBAならばメッセージとして表示する2つの方法について解説ます。
シート名を取得する
最初に関数を使ってシート名を取得する場合、つぎにVBAを使ってでシート名を取得する場合について説明します。
シート名を取得する(関数編)
下の例ではシート名 「5.まとめ」 をセルに反映させています。
解決を急いでいる方のために、まず先にシート名を取得 しセルに表示する関数を教えます。
▲スマホでご覧の方は横画面でどうぞ。
CELL関数 でシートのフルパス情報を引き出し、さらにフルパスから 必要な文字列(シート名)だけを切り出すために、RIGHT関数・ LEN関数・FIND関数 を組み合わせれば、シート名を取得 し セルに表示できます。
CELL関数
CELL関数は、そのセルの位置、書式、ファイル名を含むフルパスなど、選択されたセルに関するさまざまな情報を引き出すことができる関数です。
「検査の種類」の部分には、引き出したい情報によってさまざまな引数が入ります。
▼CELL関数の引数一覧
検査の種類 | 戻り値 |
"address" | 対象範囲の左上隅にあるセルの参照を表す文字列 |
"col" | 対象範囲の左上隅にあるセルの列番号 |
"color" | 負の数を色で表す書式がセルに設定されている場合は1、それ以外の場合は0(ゼロ) |
"contents" | 対象範囲の左上隅にあるセルの値(数式の場合はその戻り値) |
"filename" | 対象範囲を含むファイルのフルパス名(文字列) ※ファイルが保存されていない場合は値を返しません |
"format" | セルの「表示形式」に対応する文字列定数 ※戻り値多数につき、ご自身でセルの表示形式を変えて遊んでみてください |
"parentheses" | 正の値またはすべての値をかっこで囲む書式がセルに設定されている場合は1、それ以外の場合は0(ゼロ) |
"prefix" | セルの「文字位置」に対応する文字列定数 セルが左詰めの文字列を含むときは単一引用符(')、右詰めの文字列を含むときは二重引用符(")、中央揃えの文字列を含む場合はキャレット(^)、両揃えの文字列を含む場合は円記号(¥)、またセルにそれ以外のデータが入力されている場合は空白文字列("")になります |
"protect" | セルがロックされていない場合は 0、ロックされている場合は 1 |
"row" | 対象範囲の左上隅にあるセルの行番号 |
"type" | セルに含まれるデータのタイプに対応する文字列定数。 セルが空白の場合は "b" (Blank の頭文字)、セルに文字列定数が入力されている場合は "l" (Label の頭文字)、その他の値が入力されている場合は "v" (Value の頭文字) になります |
"width" | 2 つの項目を含む配列を返します。 配列の 1 つめはセルの列幅で、整数に丸められます。 セル幅の単位は、既定のフォント サイズの 1 文字の幅と等しくなります。 配列の 2 つ目の項目はブール値で、列幅が既定値の場合は TRUE、幅がユーザーによって明示的に設定されている場合は FALSE です。 |
例のように「検査の種類」を "filename" にするとセルのフルパスを値として返します。
[参照] は対象範囲ということですので省略が可能です。
今回のシート名を取得する関数でも省略されています。
エクセルファイル「Book1.xlsx」をローカルの Cドライブのtempフォルダに格納しているときに、ワークシート[5.まとめ] のA1セルに;
という関数を入力した場合の戻り値はフルパス情報となり;
となります。
今回は上記フルパス情報から、“5.まとめ” の部分だけを切り出すことによってシート名を取得できました。
この 「切り出し」 のために、RIGHT関数・LEN関数・FIND関数が必要になります。
RIGHT関数、LEN関数、FIND関数についてはこのブログをご覧になっている方は問題なく使えるのではないかと思いますので、詳細は割愛させていただきます。
ちなみに下の図は、シート名を取得してさらに文字列を組み合わせた応用例です。
シート名取得の関数のあとに、「を取得する」という文字列をつづけて短文を作ります。
シート名を取得する(VBA編)
Excel VBAのコードの記述方法を知っている方ならば、VBAでシート名を取得するのはとてもシンプルで簡単です。
Sub Get_Sheet_Name()
MsgBox Sheets(1).Name
End Sub
これだけです。
MsgBox関数とNameプロパティ
VBAでシート名を取得する場合、MsgBox関数 と Nameプロパティ を使います。
上のコードは1番目のシートのNameをメッセージボックスとして表示するサンプルです。
「Sheets(1) 」の部分は「Sheet1」という表現も可能です。
※Sheetと1の間にスペースは入れません。
みなさんの参考になれば幸いです。いろいろ試してみてください。
関連記事・広告