激凹みから立ち直る方法

エクセルのシート名の変更について教えてください。

シート1のA列に、現在のブックのシート名が、
シート1のB列には、変更したいシート名が
対応するように入力されています。
シート数は50~200程度で、つど変わります。


    A列    B列
1行目:りんご   赤色 
2行目:ばなな   黄色
3行目:メロン   緑色
    ・     ・
    ・     ・
    ・     ・

※この場合、「りんご」は「赤色」に、「ばなな」は「黄色」に、
「メロン」は「緑色」に、それぞれシート名を変換したい。

今は、手作業でひとつずつシート名を変換しており、
かなりの手間で困っています。
一覧表を作成するまでは手作業でいいのですが、
何とかして、シート名の変更を、この一覧表を参照して
できないでしょうか?
過去の質問をいろいろと見たのですが、
該当するものが見つけられず、VBAも初心者のため、
途方にくれています。
ぜひともご教授ください。

A 回答 (2件)

マクロサンプルです。

マクロは標準モジュールシートに貼り付けてください。変換表のシート名は4行目を修正のこと。

Sub Macro1()
Dim sh As Worksheet
Dim res
Const trg As String = "Sheet1" 'シート1のシート名に変更
For Each sh In Worksheets
  Set res = Worksheets(trg).Range("A:A").Find( _
    what:=sh.Name, LookIn:=xlValues, Lookat:=xlWhole)
  If Not res Is Nothing Then
    sh.Name = res.Offset(0, 1).Value
  End If
Next sh
End Sub
    • good
    • 0
この回答へのお礼

早々にありがとうございます。
これならば、A列とB列で、列単位で対応できるのですね。
質問文には書いていなかったのですが、
そのほうが都合がよく、使わせてもらいました。
本当に助かりました。
ありがとうございました!

お礼日時:2008/05/16 10:52

サンプルです参考にしてください。



Sub ChaneSheetName()
'カレントブックのSheet1!A1をカレントセルに
ThisWorkbook.Sheets("Sheet1").Range("A1").Select

'カレントセルの値が空白になるまで処理を繰り返す
Do Until Selection.Value = ""
'カレントセルと同じ名前のシート名をB列の値に変更
Sheets(Selection.Value).Name = Selection.Cells(1, 2).Value
'一つ下のセルをカレントセルに
Selection.Cells(2, 1).Select
Loop
End Sub

エラー処理等は書いてませんのでご注意を
    • good
    • 0
この回答へのお礼

早々にありがとうございます。
思いのとおりに動きました。
目からうろこがぽろぽろです。
助かりました!
ありがとうございました!

お礼日時:2008/05/16 01:10

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