解決済みの質問
excelのシート番号を取得したいと思っています。
シート名称ではなくシート番号です。
出来れば左から1番目、二番目・・・と言った情報を取りたいです。
複数のexcelシートのデータを、別のファイルへ複写して使用します。この時に、識別情報として、シート番号を添付したいと思っています。
運用上でシート名称は使用できません。
難しいようであれば、左から何番目と言う事ではなくても、excelのシステムで管理しているシート番号でもかまいません。
ファイル名=CELL("filename")のような感じで、簡単に取得したいです。
尚、マクロを使わないで、実現できないかと思っています。
申し訳けありませんが、ご存知の方いらっしゃれば、宜しくお願い致します。
投稿日時 - 2003-06-21 21:34:11
#1,2です。
#3の方のご指摘通り、シートの順番を入れ替えても、この関数の結果は、自動的に修正されません。
関数を入れたセルの値は、
その関数が、「直接参照するセル」の値が変化しない限り再計算されません。
引数がある関数の場合、自動的に再計算がおこなわれるので問題ないのですが、
この関数には引数がないため、自動再計算が行われないのです。
そこで、その点が気になる場合は、以下のように変更してください。
なんらかのイベントが発生するごとに、このユーザー定義関数については、強制的に再計算が行われるようになります。
Option Explicit
Function SHEETNAME() As Long
Application.Volatile
SHEETNAME = ActiveSheet.Index
End Function
投稿日時 - 2003-06-22 16:24:22
お礼
度々のご回答有り難う御座います。
参考になりました。
投稿日時 - 2003-06-22 23:40:48
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(3件中 1~3件目)
=CEll()、=INFO()などは要求を満たすものは無いようです。その他にも見つかりません。
私も私製関数をテストしていて、回答を開くと既に#1・#2のご回答が入っていました。
>(#2より)Indexプロパティは順番を返すようです。
Function sheetindex()
sheetindex = ActiveSheet.Index
End Function
を作り、私の場合sheet4は左から2番目にありました。
sheet4のA1セルに=sheetindex()と入れると2と出ました。
sheet4のシートタブをマウスで掴んで、4番目に移動しました。
そこでsheet4のA2に=sheetindex()と入れると4と入りました。
A1セルの2はそのまま2です(関数としては私には不思議なタイプ)。
これで画面上の左からの表示順番を表すことが確認できて間違いないと思います。
投稿日時 - 2003-06-22 06:13:45
お礼
有り難う御座います。
色々とテストして頂きまして、有り難う御座います。
(締め切らないで良かったです。)
投稿日時 - 2003-06-22 23:38:47
#1です。
先ほどの回答で
>左から何番目、というのはたぶん無理かと。
は勘違いでした。
やってみたらできました。
(Indexプロパティは順番を返すようです。)
ちなみに、コードをかくとたったこれだけです。
このコードを書くと、
ワークシート関数と同じように
=SHEETNAME()
という式だけで、簡単にシート名を取得できます。
どうですか?マクロも捨てたもんじゃないでしょう?
Option Explicit
Function SHEETNAME() As Long
SHEETNAME =ActiveSheet.Index
End Function
投稿日時 - 2003-06-21 22:50:53
お礼
早速の回答有り難う御座います。
ただいま色々と触っていましたら、具体的な回答頂きましたので早速動かしました。
goodです!
ユーザー定義関数は使ったことが無かったので、大変に良い勉強になりました。
これから、どんどん使ってみたいと思います。
投稿日時 - 2003-06-21 23:31:42
こんばんわ。
>マクロを使わないで、実現できないか
>ファイル名=CELL("filename")のような感じで
残念ですが、これはVBAを使わないとできません。
ユーザー定義関数を使えば、関数のようなイメージで、
たとえば 「=SHEETNAME()」でシート名を取得するのは簡単にできます。
ただし、ユーザー定義関数を作成するためにはVBAを使うことになります。
ちなみにVBAでは、
シート名、
もしくは
インデックス番号(これは順番とは異なります)
を取得できます。
左から何番目、というのはたぶん無理かと。
投稿日時 - 2003-06-21 22:41:10
OKWaveのオススメ
おすすめリンク