こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

マクロ シート名変更

マクロ シート名変更

Sheet1,Sheet2,Sheet3の名前を、
Sheet1のA1~A3に入力してある名前にしたいときどうすればいいでしょうか。

そして、
次に、A1~A3の入力を変えたときにSheet1,2,3の名前も
変わるにはどうやればいいんでしょうか。

お願いします...

投稿日時 - 2009-05-02 14:14:21

QNo.4925498

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

左から1.2.3となっているシートであれば、
Sheet1のシートモジュールに

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Intersect(Range("A1:A3"), Range(Target.Address)) Is Nothing Then Exit Sub

  Worksheets(Target.Row).Name = Target.Value
End Sub

と言う感じでしょうか?

投稿日時 - 2009-05-02 22:21:40

ANo.2

基礎的なことを、丸投げして質問しているが、質問規約違反。ただスモールなコードで出来るものだから、書いてみておく。
ただSheet1,Sheet2,Sheet3の名前を、・・が例示なのか不定多数有るのか、しっかり質問に書いてない。
ーー
Sheet1、Sheet2、Sheet3がシートタブの文字列なら
Sub test01()
Worksheets("Sheet1").Name = Worksheets("Sheet1").Range("A1").Value
Worksheets("Sheet2").Name = Worksheets(Range("a1").Value).Range("A2").Value
Worksheets("Sheet3").Name = Worksheets(Range("a1").Value).Range("A3").Value
End Sub
順次実行の結果シート名が変わってしまう例で、初等者の出す問題として適当でない。
変更後のシート名の入力セルは、Sheet1、Sheet2、Sheet3以外のシートに置く例を考えるべきだ。
ーーー
後半>A1~A3の入力を変えたときにSheet1,2,3の名前も・・
これも初心者の考える課題ではない。質問者は、イベントという考えを勉強した後ですか。
それとA2の値を変えたとき、変える前の値は捉えるのが難しいのだ。
下記よりも、ましなやり方が有るかもしれないが
当初Sheet1の
A1:B3に
aaaa
bbbb
cccc
と入れておく。現在のシート名はaa,bb,ccとする。
シートaaのChangeイベントに
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Set rng = Range("A1:A3")
If Not Intersect(Target, rng) Is Nothing Then
'MsgBox Target.Address
Worksheets(Target.Offset(0, 1).Value).Name = Target
Target.Offset(0, 1) = Target
End If
Application.EnableEvents = True
End Sub
を入れておく。
これで今のaaシートのA1:A3のどれかの値を変えると、指定シート名が入力した文字列にかわる。2度3度変えても大丈夫。
ーーー
こんな課題は、相当経験を積まないとできっこない。
コピー貼り付けして実行して、出来たとは思えても、
質問者には多分早すぎる課題と思う。
またChangeイベントは、値を抹消したときなどの、対策・エラーストップ回避方を作っておく必要が有るが、上記コードでは、細かくなるので省略している。
またエラーで止まったら、標準モジュールの
Sub test02()
Application.EnableEvents = True
End Sub
を実行して、シートのChangeの反応を回復しないとだめなコードである。

投稿日時 - 2009-05-02 21:45:16

ANo.1

こんにちは、

Sheet1.Name = Range("a1").Value
Sheet2.Name = Range("a2").Value
Sheet3.Name = Range("a3").Value

以上のマクロを実行すれば良い様な。

投稿日時 - 2009-05-02 14:43:41

あなたにオススメの質問