エクセル実践塾 > エクセル実践塾2016

シート名を簡単に取得したい

 

簡単なユーザー定義関数で可能です

VisualBasicを使えば、 必要に応じた値を得られるオリジナルの関数を作ることができます。

シート名を得るには、 シート番号を引数とする次のようなユーザー定義関数を作ります。


Function GetSheetName(sheetIndex As Integer) As String

 On Error GoTo ErrHandler

 GetSheetName = ThisWorkbook.Sheets(sheetIndex).Name

 Exit Function

 

ErrHandler:

 GetSheetName = "Invalid Sheet Index"

End Function

 

@「開発」タブが表示されていない場合は、タブを右クリックして、「リボンのユーザー設定」で「開発」にチェックマークをつけます

 

 

A「開発」タブをクリックし、「Visual Basic」を実行します

BVBAエディタが開いたら、編集中のブックを右クリックして、「挿入」→「標準モジュール」を選択し、新しいモジュールを挿入します

C左図のようなコードを入力します

このコードは、シートのインデックス番号からシート名を取得するユーザー定義関数(UDF)を作成するものです。

Function GetSheetName(sheetIndex As Integer) As String

新しい関数 GetSheetName を定義します。

sheetIndex は関数の引数で、シートのインデックス番号を表します。データ型は Integer です。この関数は String 型(文字列)の値を返します。

On Error GoTo ErrHandler

この行は、コードの実行中にエラーが発生した場合に、エラー処理のラベル ErrHandler にジャンプすることを指示します。

GetSheetName = ThisWorkbook.Sheets(sheetIndex).Name

現在のブック (ThisWorkbook) の指定されたインデックス番号 (sheetIndex) のシート名を取得します。

Exit Function

関数を正常終了させます。Exit Function に到達すると、それ以降のコードは実行されず、関数の戻り値が返されます。

ErrHandler::

エラーが発生した場合、ここにジャンプします。

GetSheetName = "Invalid Sheet Index"

エラーが発生した場合、GetSheetName の戻り値として "Invalid Sheet Index" という文字列を設定します。

Function GetSheetName(sheetIndex As Integer) As String

 On Error GoTo ErrHandler

 GetSheetName = ThisWorkbook.Sheets(sheetIndex).Name

 Exit Function

 

ErrHandler:

 GetSheetName = "Invalid Sheet Index"

End Function

Dブックのモジュールとして関数を作成しているので、通常の関数と同じように呼び出して使うことができます

◯番目のシートのタブ名を取得するのかを、引数として指定します。

   
   
   
   
   
   
   
   
   
   
   
   
 

 

●シート番号からシート名を得るユーザー定義関数を作る動画です

SUM関数の引数として使う場合には、 INDIRECT関数でセル参照に変換します。

関連する他のページ

ユーザー定義関数で発生するエラーを無効にしたい
ユーザー定義関数内のエラー発生箇所を見つけて、 そのエラーを無効化する方法があります

労働時間を計算するユーザー定義関数を使って、 残業時間を求めるユーザー定義関数を作りたい
既存のユーザー定義関数は、 別のユーザー定義関数内で実行して、 その結果を利用することができます

ユーザー定義関数の結果を、 場合に応じて切り替えたい
Boolean型の引数を追加して、 その指定の有無でユーザー定義関数の結果を切り替える方法があります

ユーザー定義関数の結果が0になるとき、 何も表示されないようにしたい
セルの書式設定や条件付き書式を使うのが一般的ですが、 ユーザー定義関数として処理する方法もあります

所定の休憩時間を除いた、 労働時間を簡単に求めたい
ユーザー定義関数を使う方法があります

各セルに分割した文字を、 まとめてローマ字に置き換えたい
セルの文字列を置換するユーザー定義関数を、 選択したセル範囲の文字を置換するコードに書き換えられます

『セル範囲を検索して、 該当セルの右隣の値を取り出す』ユーザー定義関数を利用して、 文字列全体を置換したい
同じモジュールにあるユーザー定義関数は、 別のユーザー定義関数から利用することができます

セル範囲を検索して、 該当セルの右隣の値を取り出したい
10行程度のユーザー定義関数で可能です

名前付きのセル範囲から、 条件に合致するデータだけを参照したい
ユーザー定義関数を作れば、 それを使った配列数式で該当データを参照できます

セル範囲を対象とするユーザー定義関数を作りたい
For Each...Next ステートメントを使って、選択範囲に含まれるセルを順番に処理します

オリジナルの関数(ユーザー定義関数)を作りたい
Functionプロシージャとして、Visual Basicで作成できます

マクロを作りたい
「開発」タブを表示しておけば、 そこから「Visual Basic」を実行してマクロを作ることができます

指定色で塗りつぶされているセルの個数を求められる、 ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

奇数行の1の個数を集計したい
奇数行であることと、 値が1であることをAND条件とする配列数式で集計できます

隔列のセル値を参照したい
値を参照する列の指定を、 数式で行う方法があります

成績一覧から上位10名を選び出して表示したい
同順が含まれる場合に備えて、 順位を表す数値に固有の小数を付加し、 それを使って順位から表引きを行います

行番号を列に表示したい
ROW関数を使えば、対象とするセルの行番号を表示できます

条件付き書式を使って、奇数行のセルだけを塗りつぶす
ROW関数で得た行番号を、MOD関数で除算すれば、その余りで奇数行と偶数行を判別できます

表内の各行を交互に2色で塗りつぶす
あらかじめ表全体を塗りつぶしておけば、 条件付き書式でISEVEN関数による偶数行の塗りつぶしを設定するだけで済みます

表内の各行を3色で順に塗りつぶす
MOD関数を使って3で除算した余りが、条件付き書式での判定条件となります

同じ数字が2つずつ並ぶ、変則的な連番を入力する
偶数行で始まるか、奇数行で始まるか、に応じて、ISEVENとISODDの関数を使い分けます

別のシートに入力してあるデータを、隔行で表示しなおす
INDIRECT関数を使って、偶数行もしくは奇数行にのみデータが表示されるようにします

市松模様(チェック柄)に表を修飾する
行番号と列番号を足したもので、条件式(論理式)としての判定を行います

対戦表で不要な同一対戦枠を黒く塗りつぶす
行番号と列番号を比較して、同一である場合のみ黒く塗りつぶされるようにします

結合セルを含む表からの集計結果を、 別表に反映させたい
MATCH関数で対象を検索し、 ADDRESS関数とINDIRECT関数の組み合わせで、 SUM関数による集計を行う方法があります

時間帯ごとの予約状況を参照しながら、 新たな予約を追加していきたい
該当する時間帯から最大値を取得することで、 予約の詰まった時間帯を条件付き書式で警告できます

日別の勤務表から、 個人別の勤務表を作りたい
シートタブ名が日にちしてあれば、 それを使ったVLOOKUP参照が可能です

直前の選択内容に応じた選択肢を表示したい」
INDIRECT関数で、直前の選択肢を『名前』として使います

逆順の並べ替えを自動的に行いたい
INDIRECT関数を使って、逆順の並べ替えを行う方法もあります

別のシートに入力してあるデータを、隔行で表示しなおす
INDIRECT関数を使って、偶数行もしくは奇数行にのみデータが表示されるようにします

曜日や『〜』を追加したい
表示形式をユーザー定義します

その月の日にちと曜日を並べて表示したい
基点となる年月日があれば、 そこから数式や表示形式で求めることができます

集計結果の0を文字列に置き換えたい
表示形式をユーザー定義する方法でも可能です

英語の月名にしたい
表示形式をユーザー定義します

毎月の日にちと曜日を自動入力したい
数式で日にちを、 表示形式で曜日を表示できます

勤務時間0を非表示にしたい
休日の勤務時間0は、 表示形式をユーザー定義することで非表示にできます

勤務時間が0になるときには非表示にしたい
「ゼロの表示形式」を#にすると、計算結果が0のときに非表示になります

経過時間を○時間○分と表示したい
2つの時刻の間で減算を行い、表示形式で○時間○分という形式にユーザー定義します

今日の日付と曜日を表示したい
TODAY関数で得た日時を、表示形式を変更して、曜日付きの日付にします

計算結果の0を非表示にしたい
表示形式を「#」にします

計算結果が0になるとき、それが表示されないようにしたい
表示形式で、値が0のときだけ白色で表示されるようにできます

日付と、それに対応する曜日を表示させたい
年月日形式で日付を入力しておけば、表示形式でその曜日も表示できます

条件に応じて数値を色分けしたい
表示形式では、複数の条件による色分けも行えます

60を超える数値を赤色で強調したい
単純な数値との比較による色分けくらいなら、 条件付き書式を使わなくても、表示形式でも行えます

郵便番号をハイフン付きで表示したい
表示形式でユーザー定義することで、入力データに手を加えることなく、 表示だけを変えられます

日付と一緒に曜日を表示したい
表示形式を変えることで、曜日も表示できるようになります

年月日の日付データを、月日だけで表示したい
ユーザー定義で表示形式を変更します