この人頭いいなと思ったエピソード

Excelの各シートのタグというんでしょうか(最初にsheet1とかになっている部分です)、ここにそのシート内にある所定のセルの内容をそのまま表示する方法ってありますか?

具体的にいうと、人事の個人別異動履歴等を個人ごとのシートで管理したいんです。
例えば、各シートのA1のセルに社員コードを入れるようにするとして、シート名を自動的にその番号にできないかと思っているんです。
可能でしょうか?
よろしくお願いします。

A 回答 (6件)

#4です。

お礼の中に記された
>各シートの同じセルにあるデータをそのシートの名前にしたいんです。
この方が簡単です。
Sub test01()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
' MsgBox ws.Name
' MsgBox ws.Range("a1")
ws.Name = ws.Range("a1")
Next
End Sub
で出来ました。
    • good
    • 6
この回答へのお礼

なんとかできましたっ!
ありがとうございました!

お礼日時:2003/06/28 11:10

#3です。


回答ではありません。

>1ブックに許されるシート数には制限があります。

ちなみにExcelの仕様を調べてみましたら、
 ブックのシート:
 使用可能メモリに依存 (既定では 3)
だそうです。

ただあまりひとつのブックに大量のシートを作ると、
ファイルが巨大になったり、
ふとした拍子にファイルが壊れそうで、精神衛生上あまり良くないですね。^^
    • good
    • 1
この回答へのお礼

たびたびありがとうございます。
Accessですか!
実はPCに入ってないんですよ。
でも確かにそっちの方が良さそうですね。

それと、現在のシート数は120くらいなんですが、今のところストレスなく動いてますよ。
でも多すぎるんでしょうか?

お礼日時:2003/06/20 09:29

VBAで簡単です。


(テストデータ)A1:A3
山田三郎
野田和郎
川野寛
(プログラム)
Sub test03()
For i = 1 To 3
Worksheets.Add.Name = Worksheets("sheet4").Cells(i, "A")
Next i
End Sub
(1)判りやすくするため3人分にしてテストしました。社員名をSheet4のA1:AXまでに漢字で入れてください。123
人であれば、For i = 1 To 123とします。
(2)名前をA列に入れたから、"A"となっています。
D列に入れたら"D"に変えてください。
(3)1ブックに許されるシート数には制限があります。
いくらだったか忘れました。
(4)VBAは、ALTキーを押しつつ、F11キーを押す。VBE画面が出たところで
(5)ALTキーを押しつつI(挿入)次いでM(標準モジュール)出てきた画面に上記を貼りつける。
F5(実行)キーを押す。
同姓同名は困ります。なにか区別する方法を考えること。
    • good
    • 4
この回答へのお礼

詳しい説明をありがとうございます。
でも、やりたいこととちょっと違うみたいなんです。
1列にあるデータを取り込みたいのではなく、各シートの同じセルにあるデータをそのシートの名前にしたいんです。
でも、この方法も別のことには使えますね。
ありがとうございました。

お礼日時:2003/06/20 09:27

こんにちは。



個人別異動履歴の個人ごとのシートは、もう出来上がっているものでしょうか。

すでに出来上がっているシート名を、
マクロで一括して変更したいならば、
#1,#2さんの処理をさらに
For Each ~ Next でくくって、
全シートをいっぺんに変更する処理が必要ですね。

この場合、事前にシート名が重複しないかチェックしたり、
変更処理中にシート名のダブりが発生しないか、
入念にチェックする必要があるでしょうね。

これはどちらかというとアドバイスですが、
EXCELより、Accessが得意とする分野のような気がしますね。
    • good
    • 2

#1のats8181oyajiさんのおっしゃるようにActiveSheet.Nameでできます。


もっと簡単に、A1が書き換えられたと同時に変更しようと思えば
Worksheet_ChangeイベントでTarget.Addressが"$A$1"の時だけ
ActiveSheet.NameにA1の値を入れるようにすればいいですよ。
    • good
    • 2
この回答へのお礼

ありがとうございます。
さっそくやってみたいんですが、ちょっとトラブルがあってすぐにできません。
あとでこれを参考にやってみますね。

お礼日時:2003/06/20 09:24

こんにちは、ats8181oyajiです



結論から。。。できます。

ActiveSheet.Nameというのを使います。

実際に私がVisualBasicEditorでテストをした
関数を以下にのせておきます。

Sub test()

MsgBox "アクティブ シート名: " & ActiveSheet.Name
ActiveSheet.Name = "test1"
MsgBox "アクティブ シート名: " & ActiveSheet.Name

End Sub

この例の"test1"を指定セルにしてあげれば
よろしいかと思います。
では。
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそくやってみたいんですが、ちょっとトラブルがあってすぐにできません。
あとでこれを参考にやってみますね。

お礼日時:2003/06/20 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報